Excel総合相談所 76
at BSOFT
1:名無しさん@そうだ選挙にいこう
08/12/07 22:07:10
Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に>>2-10あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
URLリンク(www.google.co.jp)
前スレ
Excel総合相談所 75
スレリンク(bsoft板)
2:名無しさん@そうだ選挙にいこう
08/12/07 22:07:45
▼━質問時の注意・決まり事━━━━━━━━━━
・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F)
・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。
・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
ここは技術的な質問のみで。
・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能でExcelに関係ないことも出来ます。
Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、
どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。
但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。
ここみたいに丸投げはダメですよ。
・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。
例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。
その上で、どううまくいかないのかを具体的に書きましょう。
エラーが出るなら、何処でどういうエラーが出るのか、
想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
・9 マルチはダメ。一度マルチしたら、謝っても他のスレの質問を取り下げても回答は得られないと思ってください。
・A テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、
チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、
ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。
・B 書籍や解説サイトの紹介依頼はスレ違い。ここは技術的な質問のみで。
3:名無しさん@そうだ選挙にいこう
08/12/07 22:08:22
★ルールを無視すると…
>>1-2あたりのルールに従うか否かは自由だけど、従わないと以下のような不利益があるよ
1.マルチをしてしまったら…
A.謝っても他での質問を取り下げても、以後その質問に対する回答は付かない物と思ってください。
それが嫌なら初めからマルチなんてしないように。>>2にマルチ禁止と書いてあり、
マルチの意味が分からなければ検索すれば出てくるので、「知らなかった」は通用しません。
2.>>1★4に従わず、必要な情報を出さないと…
A.自分の使用しているバージョンで使えない機能を答えられたり、VBA使えないとか使いたくないと書かないと
VBAでの解決OKで自分でコード書けるものと勝手に解釈されて、「VBAで出来るから自分でコード書いて」程度の
適当な回答を返されたりします。また、ここではVBAコード書けない人の丸投げ依頼を許可してますが
これはきちんとルールに従って質問、依頼した人のみの特権です。
3.情報・条件を後出しすると…
A.後から出された情報は意図的に無視されたり、質問自体を放置されたりします。
>>1★4の必須情報はもちろんのこと、要望や条件、既に試したことなどは、
長文になってもいいので詳細かつ明確かつ具体的に書きましょう。
★VBAについて
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
4:名無しさん@そうだ選挙にいこう
08/12/07 22:09:04
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼環境・書式
・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007では16'384列、1'048'579行扱える)
・ Excel2003以前で条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA)
・ 行の高さを0.25きざみ以下の単位で指定する
・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト)
・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける)
・ 祝日を判断する (作業セルに祝日を列挙、VBA)
・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合)
・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など
・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する (プラグイン)
・ 罫線幅の自由指定
・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA)
・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整)
▼操作
・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成)
・ 複数シートを選択して入力規則やシートの保護を設定する (VBA)
・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA)
・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA)
・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える)
・ 1セルを分割 (分割したいセル以外を結合)
5:名無しさん@そうだ選挙にいこう
08/12/07 22:09:36
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
Excel2007についても未確認な項目が多いので変更点が有ればご指摘下さい。
また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。
ここに書かれてないからといって必ず出来るはずだなんて思わないように。
>▼環境・書式
> ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
補足
2007ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、
指定も同じくcm単位でできる。
ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように
近い値に勝手に丸められる。
6:名無しさん@そうだ選挙にいこう
08/12/07 22:10:14
||
|| ━ 質問のしかた ━
||
|| ★1 質問するときは、環境や条件をキチンと書くこと。情報後出しはダメ。
|| ★2 要望は具体例や図を使って明確かつ具体的にしる。
|| ★3 質問前に>>2-20あたりの注意書きやQ&Aを必ず読むこと。
|| ★4 質問テンプレ(雛形)は必須ではないが、
|| OSやExcelのバージョン、VBAの可否などは必須情報。
||
|| ∧ ∧ 。
|| ( ,,゚Д゚)/ ジュウヨウ!! E[]ヨ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/  ̄ ̄ ̄ ./| ________________
| ̄ ̄ ̄ ̄| | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ は〜〜〜〜い /
∧ ∧ ∧,,∧ ∧ ∧
( ,, ∧▲ ミ ∧ ∧ ( ∧ ∧
〜(_( ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
@(_(,,・∀・)@ ( *)〜ミ_ ( ,,)
@(___ノ 〜(___ノ 〜(___ノ
エクセルの技術的な質問と関係ない議論・雑談は下記スレッドで。
【質問不可】Excel総合相談所スレの雑談・議論スレ2
スレリンク(bsoft板)
7:名無しさん@そうだ選挙にいこう
08/12/07 22:10:47
【 このスレの登場人物 】
┌─質問者──────
どこにでもいるごく普通の初心者だったり
会社で上司に無理難題を押しつけられて困っている人だったりする。
たまに学生が宿題を持ち込んでくることも。
┌─回答者──────
テンプレを使わないと無視したり、質問を小出しにするとキレたりするくせに
自分は回答を小出しにして優越感に浸りニヤニヤしている嫌なヤツ。
┌─自称回答者─────
質問者を煽ったり、回答者を煽ったり、とにかくスレを引っかき回すだけで
何の役にも立たない賑やかし。単なるヒマ潰しでこのスレを見ている。
┌─VBA厨 ──────
VBAは万能と信じ、どんな単純な問題もついVBAで解いてしまう。
Module1がデフォルトで挿入されている世界を夢見るが、いまだ実現していない。
その実態はほとんどが理系の(元)学生。ピボット厨に目の敵にされている。
┌─ピボット厨─────
ピボットテーブルの機能が強力すぎるため、なんでもできると錯覚している。
口癖は「データを正規化して出直せ」「ピボッと参上ピボッと解決」など。
弱点は大嫌いなVBAを使わないとテーブルのリアルタイム更新ができないこと。
┌─啓蒙先生─────
ピボット厨一派の過激派。Excelはピボットテーブルだけのためにあり、
それ以外の機能はワークシート関数すら不要と言い切る。ピボットテーブルで
解決できない質問からは威嚇しながら逃げる。最初から出てこなきゃいいのに。
┌─そのほか─────
ワークシート関数厨……何重にも入れ子になった複雑怪奇な数式を作り出し、
関数だけでどんな問題も解いてしまう。たまに自分でも何をやっているか
わからなくなる。悩みは数式バーが1行しかないこと、頭が薄くなってきたこと。
配列数式厨……意外と使えるやつだが滅多に出てこない、というか出番がない。
極めてマイナーな存在。見かけたらその日はいいことがあるかも。
ナレーター……誰か知らない人。
8:名無しさん@そうだ選挙にいこう
08/12/07 22:37:35
マクロを途中で一時停止させるにはどうしたら良いのでしょうか?
お願いいたします。
9:名無しさん@そうだ選挙にいこう
08/12/07 22:40:35
中断ボタンを押すか、Ctrl+Break
毎回特定の場所で一時停止させたいならMsgBoxでも使え
10:名無しさん@そうだ選挙にいこう
08/12/07 22:54:47
表を作るときに指数部分を揃える方法ってないでしょうか?
どうしてもE-02やE-01など混ざってしまいます
11:名無しさん@そうだ選挙にいこう
08/12/07 23:13:07
>>8
F8押せば一行ずつ実行できる
ステップインとかでぐぐれ
12:名無しさん@そうだ選挙にいこう
08/12/08 00:08:47
>>10
指数表示をやめればいいのでは?
13:名無しさん@そうだ選挙にいこう
08/12/08 00:13:14
>>10
##0.0E+00
のように#を好きなだけつける
14:名無しさん@そうだ選挙にいこう
08/12/08 03:30:29
>>12-13
ありがとうございます
15:名無しさん@そうだ選挙にいこう
08/12/08 06:11:21
以前はPCにあったエクセルが消えてしまったんですが、復活させる方法はあるのでしょうか?
また、消えてたってことは自分で削除したってことですよね・・・?
16:名無しさん@そうだ選挙にいこう
08/12/08 06:16:29
>>15
消えたってのはアンインストールされてるってこと?
デスクトップやスタートメニューにアイコンがないってこと?
具体的に書け
アンインストールされてるならインストールしなおすしかない
アイコンないだけならexeからショートカット作り直せばいいだけだからまた聞け
17:名無しさん@そうだ選挙にいこう
08/12/08 07:31:16
>>15
ウィンドウズキー+R、ボックスに
excel.exe
と入れてok
起動すれば残ってる、起動しなければ残ってない
ディスクが残ってなければOOoでもいれとけ
18:名無しさん@そうだ選挙にいこう
08/12/08 09:30:30
>>9
Ctrl+Break ってどうやるのですか?
Breakボタンってどれのことなのでしょうか?
19:名無しさん@そうだ選挙にいこう
08/12/08 09:53:38
Sub 自動グラフ作成()
For i = 5 To 32 Step 3
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=distance!R18C1:R1009C1"
ActiveChart.SeriesCollection(1).Values = "=distance!R18C" & (i + 2) & ":R1009C" & (i + 2)
Next
End Sub
上記のように表の中の決められたセルからデータを取り出して自動的にグラフを作成してくれるマクロを作成したのですが、奇数個めのグラフは正常に生成されるのですが、偶数個めのグラフになぜか
x=
y=distance!$M$18:$M$1009
x=
y={1}
みたいな必要なグラフ以外に上記の2つのグラフを混じってしまいます。これってどこがおかしいのでしょうか?
どなたか助けて下さい。
お願いいたします。
20:名無しさん@そうだ選挙にいこう
08/12/08 09:57:18
Excel VBAで有効数字ってどうやって指定するのでしょうか?
計算である有効数字以下全く計算しない設定にするにはどうしたら良いのでしょうか?
21:名無しさん@そうだ選挙にいこう
08/12/08 09:58:59
>20
つRound
22:名無しさん@そうだ選挙にいこう
08/12/08 10:12:46
>>21
小数点何桁以下の四捨五入とかではなく、有効数字で決める方法はないのでしょうか?
それと例えば24324342*453454353
みたいな計算があるとして、有効数字5桁目以下を全く計算せず四捨五入する
みたいな方法も教えて頂けないでしょうか?
お願いいたします。
23:15
08/12/08 10:25:16
PCから>>15です
レス有難うございます
曖昧な書き方でごめんなさい
>>17の方法で出なかったので、ファイル名を指定して実行をしました
あったので開こうとしたら、「オブジェクト ライブラリ(vbean32.old)が見つからないか、または壊れています。
セットアップ プログラムを実行し、インストールし直して下さい。」と出て開けませんでした
ok押すと、「Miclosoft excelは現在のユーザー用にインストールされていません。セットアップを実行してアプリケーションを
インストールして下さい。」と出ました
ちなみに、数ヶ月前まで使えていたWordも開けませんでした
これも「Miclosoft wordは現在のユーザー用にインストールされていません。セットアップを実行してアプリケーションを
インストールして下さい。」出ました
これらは修復可能なんでしょうか?
OSはXPで、6年以上前に購入したPCで古いです
どうかよろしくお願いします;;
24:名無しさん@そうだ選挙にいこう
08/12/08 10:43:57
マウスのダブルクリックを使わずにキーボードから、
選択セルを「編集モード」にするにはどうすればいいですか?
25:名無しさん@そうだ選挙にいこう
08/12/08 10:52:02
F2
26:名無しさん@そうだ選挙にいこう
08/12/08 10:53:35
>>25
ありがとうございます
27:名無しさん@そうだ選挙にいこう
08/12/08 11:12:59
>22
つRound/Rounddown/Roundup
28:名無しさん@そうだ選挙にいこう
08/12/08 12:51:35
>>22
値が必ず整数の場合
=ROUND(値,有効数字−値の文字数)
その他の場合は上式を工夫する
29:名無しさん@そうだ選挙にいこう
08/12/08 13:17:16
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 エクセル 空白セル 挿入
一行にある入力済みの複数のセルの任意のセル間に空白セルを挿入する際に、
マウスやメニュー操作等を用いず、キー操作だけ(なんかのキー+Tab等)で行う方法はありませんでしょうか?
例1:ここに空白セルを挿入したい
. ↓
東京都|西新宿|1-1-1
↓↓↓
東京都| |西新宿|1-1-1
例2:ここに空白セルを挿入したい
. ↓
神奈川県|横浜市|1-1-1
↓↓↓
神奈川県|横浜市| |1-1-1
よろしくお願いします。
30:名無しさん@そうだ選挙にいこう
08/12/08 13:25:29
Alt i e i Enter
31:名無しさん@そうだ選挙にいこう
08/12/08 13:35:33
>>30
早速にありがとうございます。
確かにできますね。
ただ手間としてはマウス右クリック→挿入とそれほど大差ないですね、、、
もっと手間の少ない入力方法があれば・・・思ったのですが、諦めますorz
ありがとうございました。
32:18
08/12/08 13:47:21
何卒よろしくお願い致します。
33:名無しさん@そうだ選挙にいこう
08/12/08 13:50:22
Dim i As Long
みたいに変数の型を定義しなかった場合どうなりますか?
何に定義されるのでしょうか?
34:名無しさん@そうだ選挙にいこう
08/12/08 13:50:49
バリアント
35:名無しさん@そうだ選挙にいこう
08/12/08 14:09:29
>>29
挿入だけ続けてやるなら Ctrl + Y が便利だけど
それじゃだめなのかな
36:15
08/12/08 14:12:43
>>23について分かる方いませんか?
他スレで回答聞いた方がいいのでしょうかorz
37:名無しさん@そうだ選挙にいこう
08/12/08 14:15:32
グラフについて教えて欲しいのです
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ・まったく
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excel総合相談所
普通の棒グラフなのですが、棒の色を半透明というか透過とうか
そういうことってできませんか?
単純な成績のグラフで、実績と挙績の数字があって
実績のグラフの中を挙績のグラフで塗りつぶしていこうという目論見なのです
棒の重なりを100にして重ねることはできたのですが
このままだと挙績>実績になるとどこまでが実績かわからなくなってしまうので
挙績の棒を半透明みたいにスケレートンにしたいのです
よろしくお願いしたいのです
38:名無しさん@そうだ選挙にいこう
08/12/08 14:25:35
>>36
OSクリーンインストールして出直してこい。スレ違い。
39:15
08/12/08 14:31:11
>>38
すみません;;
ちなみに>>38の「vbaen32.olb」でした・・・
40:名無しさん@そうだ選挙にいこう
08/12/08 14:38:13
>>32
キーボードの右上あたりに、押したことのないキーが並んでるでしょ。
よく探してごらん。BreakとかBRKとかいうのがあるはず。
41:名無しさん@そうだ選挙にいこう
08/12/08 15:01:30
>>37
手前側になる方のグラフを塗りつぶしなしにして半透明のオートシェイプを貼り付ける。
別の方法としては、Mac版Excel2004でグラフを作ってインポートする。
Mac版2004ではワンタッチでグラフを半透明に出来て、しかもそれをWin版2002や2003で読み込むと
ちゃんと半透明のまま表示される。
42:名無しさん@そうだ選挙にいこう
08/12/08 15:02:42
>>40
うひょおおおおおお
ありがとうございます。
できれば一時停止の仕方もありましたら教えて下さい。
何卒よろしくお願い致します。
43:名無しさん@そうだ選挙にいこう
08/12/08 15:13:36
Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Cells(13, 2)
を使ってあるワークシートから違うワークシートに決められたセルの内容をコピぺしたい場合には
どう記述したら良いですか?
44:名無しさん@そうだ選挙にいこう
08/12/08 15:15:23
【1 OSの種類 .】 WindowsXP HE
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
以下のような源泉徴収票摘要欄のデータが数百行あります。
(ひとつのセルです)
前職:鰍Qちゃんねる 給与654254 税10840 社保82380
ここから給与、税、社保それぞれ別なセルに金額のデータを取り出したいのです。
規則性があるといえば、給与でいえば、"給与" から " "の間の数字になります。
45:名無しさん@そうだ選挙にいこう
08/12/08 15:17:21
>>42
Ctrl+Breakで一時停止、F5で一時停止したところから再開
46:名無しさん@そうだ選挙にいこう
08/12/08 15:22:16
>>43
Destination:=Worksheets("Sheet2").Range("B13")
47:名無しさん@そうだ選挙にいこう
08/12/08 15:25:59
>>44
=MID(A1,FIND(" 給与",A1)+3,FIND(" ",A1,FIND(" 給与",A1)+1)-FIND(" 給与",A1)-3)
48:名無しさん@そうだ選挙にいこう
08/12/08 15:29:26
給与
=MID(A1,FIND(" 給与",A1)+3,FIND(" ",A1,FIND(" 給与",A1)+1)-FIND(" 給与",A1)-3)
税
=MID(A1,FIND(" 税",A1)+2,FIND(" ",A1,FIND(" 税",A1)+1)-FIND(" 税",A1)-2)
社保
=RIGHT(A1,LEN(A1)-FIND(" 社保",A1)-2)
49:名無しさん@そうだ選挙にいこう
08/12/08 15:39:47
社保=MID(A1,FIND(" 社保",A1)+3,9)
50:名無しさん@そうだ選挙にいこう
08/12/08 15:42:51
給与=MID(A1,FIND(" 給与")+3,FIND(" 税",A1)-FIND(" 給与",A1)-3)
税 =MID(A1,FIND(" 税")+3,FIND(" 社保",A1)-FIND(" 税",A1)-2)
51:44
08/12/08 15:43:04
>>47-48
感謝感謝です。
52:名無しさん@そうだ選挙にいこう
08/12/08 15:44:05
>>46
ありがとうございます。
開いている全てのワークブックからそのファイル名と決められた位置のセルの内容を
A1にファイル名、A2:A1001にデータ
B1にファイル名、B2:B1001にデータ
・・・
みたいな感じで、複数のファイルからの内容を一つのワークシートにまとめるような
マクロを作りたいのですが、どうすれば良いのでしょうか?
For eachだとうまく作れないのですが、どうすれば良いのでしょうか?
53:名無しさん@そうだ選挙にいこう
08/12/08 15:59:04
>>52
こんな感じでできるはずだけど
Sub Sample1()
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
c = c + 1
Next
End Sub
54:名無しさん@そうだ選挙にいこう
08/12/08 17:08:26
【1 OSの種類 .】 WindowsXP HE
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 勉強中・初心者
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
BookAにはシートが50個あります。BookBはデータ処理し数値抽出用。BookCは真っ白。
BookAのシート1のデータをコピー(全抽出)してBookBに貼り付け、抽出されたデータをBookCに貼り付け。
次にBookAのシート2のデータをコピー(全抽出)してBookBに貼り付け、抽出されたデータをBookCに貼り付け(BookAシート1の時の下の段に)
次にBookAのシート3を・・・
というふうに自動でできるようにしたいのですが、どのようにマクロやVBAを使えばいいでしょうか?
例や使うべき命令などを教えていただけないでしょうか?よろしくお願いします
55:名無しさん@そうだ選挙にいこう
08/12/08 17:11:44
BookBを何に使ってるのかよくわからない
56:名無しさん@そうだ選挙にいこう
08/12/08 17:14:45
>>55
すみません。
BookBはBookAからコピーしてきた数値に特定の数値を足したり引いたりしているBookです
57:名無しさん@そうだ選挙にいこう
08/12/08 17:35:56
>>56
コピペには色々な方法があるけど、見た目でわかりやすいのはこう。
ブック名、シート名、範囲と、貼り付け先をこんなふうに書く。
Sub セル内容の一括コピー()
Workbooks("BookA").Worksheets("Sheet1").Range("A1:C100").Copy 'コピー
Workbooks("BookB").Worksheets("Sheet1").Range("A1").PasteSpecial '貼り付け
End Sub
58:名無しさん@そうだ選挙にいこう
08/12/08 17:44:23
>>54
ワークシートは名称で指定するのが普通だけど左から何番目かで指定することもできるから
for i = 1 to Worksheets.Count 〜nextとか使って
Worksheet(i)の望みの範囲をコピー貼り付けすればいいんじゃないの
59:名無しさん@そうだ選挙にいこう
08/12/08 17:49:14
>>56です
>>57-58
ありがとうございます!とりかかってみます!
60:名無しさん@そうだ選挙にいこう
08/12/08 18:29:37
>>53
うおおお、できましたありがとうございます。
あと2つよろしいでしょうか?
いま001.xls、002.xls、003.xls・・・というファイルの中にそれぞれ001、002、003・・・というシートが入っているのですが、
Sub Sample1()
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
c = c + 1
Next
End Sub
でファイル名ではなく、そこに入っているファイル名と同じシート名を抜き出すためにはどうしたら良いのでしょうか?
それと、001.xls、002.xls、003.xls・・・というファイルの中の001、002、003・・・というシートから
それぞれ同じ箇所のセルからデータを抜き出したいのですが、
Destination:=Worksheets("Sheet2").Range("B13")
というのにどう書き加えれば良いのでしょうか?
何卒よろしくお願い致します。
61:名無しさん@そうだ選挙にいこう
08/12/08 18:41:44
>>53
質問者じゃないんだけれどこのWって何なの?
何の定義もせずに使えるものなの?
62:60
08/12/08 18:50:51
Sub Sample1()
c = 2
For Each W In Workbooks
For Each ws In Worksheets
Cells(12, c) = ws.Name
Range(Cells(2108, c), Cells(3108, c)) = ws.Range(Cells(2108, 2), Cells(3108, 2))
c = c + 1
Next
Next
End Sub
これでうまくいくと思ったのですが、
Range(Cells(2108, c), Cells(3108, c)) = ws.Range(Cells(2108, 2), Cells(3108, 2))
で定義エラーと出てくるのですが、なぜなのでしょうか?
63:名無しさん@そうだ選挙にいこう
08/12/08 19:08:57
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows Vista Ultimate x64
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 折り返して全体を表示 ずれる 印刷
「折り返して全体を表示する」で複数行になっているセルを印刷プレビューや印刷をすると
下の行の文字がかなりの確率で印刷時切れてしまいます。
印刷前は文字が隠れたりはしないように適宜改行しているのにです
1.一セルの文字数は40字以上で減らすことは難しいです。
また、縮小表示も目視できずとり得ません。
その他にこれをなくすための改善策は2003ではありませんでしょうか?
とくに、
現状調べた中ではAlt+改行を繰り返すというのがありますが、
これをまくろでやることってできるんでしょうか。
2.Excel2007以降では改善されているのでしょうか。
64:名無しさん@そうだ選挙にいこう
08/12/08 19:37:34
>>61
変数宣言は一応省略もできるけども、しないといろいろ困るよね
>>63
Chr(10)が改行に当たる文字コードだからこれをマクロで挿入すればいいんだろうけど
Alt改行は好きな位置で改行が出来るというだけで、編集画面と印刷プレビューでずれる問題は
折り返して全体を表示の時と変わらないと思う
2007ではページレイアウトっていう新しい編集画面が出来たからこれでズレは防げるんじゃないかなあ
自分は2007あんまり使ってないから断言できない、ごめん
65:62
08/12/08 19:39:56
どうしてもうまくいきません。
どうすれば良いのでしょうか?
どなたか何卒よろしくお願い致します。
66:名無しさん@そうだ選挙にいこう
08/12/08 19:57:38
つーか、また計算ソフトで文書作成してる頭の弱い子ですか...
67:名無しさん@そうだ選挙にいこう
08/12/08 20:00:01
>>66
どういうことですか?
他に何か方法があるのですか?
68:63
08/12/08 20:05:01
>>64
ありがとうございます
バージョンアップして解決できるならエクセル2007明日にでも買うんですが。。。
69:名無しさん@そうだ選挙にいこう
08/12/08 20:08:33
2007はやめといたほうがいいような・・
2003で作って2007で最終仕上げ+印刷だけするってならわからんでもないけど
70:名無しさん@そうだ選挙にいこう
08/12/08 20:15:43
>>65
やはり前スレのあなたでしたか・・・
>>68
2007のヘルプより
>印刷機能の向上
>[ページ レイアウト] ビュー
>Office Excel 2007 では、[標準] ビューと [改ページ プレビュー] ビューに加えて、
>[ページ レイアウト] ビューが用意されています。
>このビューを使用すると、印刷時の見栄えを確認しながらワークシートを作成できます。
>このビューでは、ページのヘッダー、フッター、および余白の設定をワークシート内で直接操作したり、
>グラフや図形などのオブジェクトを目的の位置に適切に配置できます。
>また、新しいユーザー インターフェイスである [ページ レイアウト] タブでは、
>すべてのページ設定オプションに簡単にアクセスでき、用紙の方向などのオプションをすばやく指定できます。
>各ページに印刷される内容を簡単に確認できるので、何度も印刷を試したり、
>印刷時にデータの欠損が生じたりするのを避けることができます。
まあ2003と2007は一応共存できるし・・・2007だけ使おうとすると最初かなりイライラさせられるかも
71:名無しさん@そうだ選挙にいこう
08/12/08 20:20:36
>>62
作業してるシートをアクティブにすれば動くかもね
72:名無しさん@そうだ選挙にいこう
08/12/08 20:34:10
>>61
VBAは変数を宣言しなければシステムが勝手にバリアント型の変数を作ってくれる。
Dim W As Valiant を省略したのと同じ動作になる。
人間が楽を出来るかわりにパフォーマンスやメモリの利用効率が落ちる。
厳密にやるなら Dim W As Workbook と宣言する。
73:名無しさん@そうだ選挙にいこう
08/12/08 20:40:08
>>71
もちろんアクティブにしているのですが、うまくいきません。
どなたか助けて下さい。
74:名無しさん@そうだ選挙にいこう
08/12/08 20:54:26
>>62
シートを操作する時、どのブックの中のシートかをちゃんと書かないと常にアクティブワークブックが対象になってしまう。
For Each ws In Worksheets
↓
For Each ws In W.Worksheets
これをふまえて修正すると、こんな感じになる。ブック名と、各ブック内のシート名の一覧表を作るサンプル。
Sub Sample2()
Dim W As Workbook
Dim ws As Worksheet
Dim r As Integer
Dim c As Integer
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
r = 2
For Each ws In W.Worksheets
Cells(r, c) = ws.Name
r = r + 1
Next ws
c = c + 1
Next W
End Sub
ブック名を文字列変数に入れて拡張子を切り取ればいい。シート名を指定してコピーする方法は>>57
75:名無しさん@そうだ選挙にいこう
08/12/08 21:04:07
>>21>>27>>28
君たち有効数字って知ってる?
76:名無しさん@そうだ選挙にいこう
08/12/08 21:12:05
>>74
ありがとうございます。
でも実行してもうまくいかないのですが・・・
それと全てのシートの全てのデータを抜き出したいのではなく、
全てのシートの
Range(Cells(2108, 2), Cells(3108, 2)) に該当するデータだけを
Range(Cells(2108, c), Cells(3108, c))のセルにそれぞれ移したいのですが、
どうすれば良いのでしょうか?
For each だと範囲を指定できないのではないのでしょうか?
それと Next ws Next W って初めて見たのですが、
これってどういう意味があるのでしょうか?
77:名無しさん@そうだ選挙にいこう
08/12/08 21:29:38
>>76
つURLリンク(www.google.co.jp)
つURLリンク(office.microsoft.com)
78:63
08/12/08 21:35:51
>>69>>70
ありがとうございます。
非常に悩ましいですが70さんの説明だといけそうですね。
しまった。。。
大学で印刷する予定なのでOffice2003と下位互換性があるかお聞きして良いでしょうか
それとも1シート毎PDFで保存してPDFとして印刷すればよいのでしょうか。
79:名無しさん@そうだ選挙にいこう
08/12/08 22:14:21
>>78
詳しい人出てこないから答えちゃうけど
97-2003形式のxlsファイルで保存すれば一応互換性は保たれる事になってる
でも細かいレイアウトとかに関してはちょっとわからない
2003でプレビューと行ったり来たりしながら調整していくか
2007で作って2003で最終確認してから持っていくか
2007で作ってPDF化するか、のどれかになるのでは
80:76
08/12/08 23:51:24
うおおおおおおおおおおお
どなたかお願いしますよおおおおおおおおおおお
81:名無しさん@そうだ選挙にいこう
08/12/09 00:10:30
>>80
Nextのあとに書くのは制御変数。なくても動くしバイナリの速度もサイズも変わらない。
バグよけのおまじない。
82:名無しさん@そうだ選挙にいこう
08/12/09 00:54:15
そういえばNextの後ろに書くべきって遺体子がいたな。
83:名無しさん@そうだ選挙にいこう
08/12/09 01:15:22
>>80
こうか?
Workbooks("BookA").Worksheets("Sheet1").Activate: Range(Cells(2108, 2), Cells(3108, 2)).Copy
Workbooks("BookB").Worksheets("Sheet1").Activate: Range(Cells(2108, c), Cells(3108, c)).PasteSpecial
シート名を指定する"Sheet1"ってのは単なる文字列だから好きに変えればいい。
84:名無しさん@そうだ選挙にいこう
08/12/09 02:14:46
>>80
>>62
Sub Sample1()
dim W as workbook
dim ows as worksheet
dim ws as worksheet
dim c as integer
set ows = activesheet
c = 2
For Each W In Workbooks
For Each ws In W.Worksheets
ows.Cells(12, c).value = ws.Name
Range(ows.Cells(2108, c), ows.Cells(3108, c)).value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).value
c = c + 1
Next
Next
End Sub
かな。試してないけど。activate はしなくてもできるはず
省略なんて、省略するとどういう動作をするのかをちゃんと把握してからやるもんだ
85:名無しさん@そうだ選挙にいこう
08/12/09 09:51:28
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 メール エクセル 背景色が変わる
メールにてエクセルの表を添付し送ってもらうと送信者の意図しない
背景色に勝手に変わって表示されてしまうのですが、
(背景色をなしで作成してメールを送ってもらうとこちらで開くと灰色に変わってたり)
この原因って何が考えられられますか?
分かる方教えて下さい。
86:37
08/12/09 12:00:36
>>41
棒の数が100や200ではないのと
デイリーに毎日作るグラフであること、
会社のPCなのでMAC版も無理なので
あきらめることにします・・・
お返事ありがとうございました
87:名無しさん@そうだ選挙にいこう
08/12/09 12:03:07
>>86
オートシェイプの貼り付けは棒の本数に関係なく、1つのグラフに1回やるだけ
88:名無しさん@そうだ選挙にいこう
08/12/09 12:13:34
>>86
作業列を作って、重なって見えなくなるときは作業列のデータを表示する
URLリンク(upload.jpn.ph)
89:名無しさん@そうだ選挙にいこう
08/12/09 12:44:13
>>84
ありがとうございます。
うまくいきました。
それと自分自身ファイルからはデータを転送する必要がないので下記のような書き加えをしたのですが、
なぜかエラーが出てきます。これは一体どこがまずいのでしょうか?
Sub Sample1()
Dim W As Workbook
Dim ows As Worksheet
Dim ws As Worksheet
Dim c As Integer
Set ws1 = ThisWorkbook.ActiveSheet
Set ows = ActiveSheet
c = 2
For Each W In Workbooks
If W.Name <> ThisWorkbook.Name Then
For Each ws In W.Worksheets
ows.Cells(12, c).Value = ws.Name
Range(ows.Cells(13, c), ows.Cells(1013, c)).Value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).Value
c = c + 1
End If
Next
Next
End Sub
90:名無しさん@そうだ選挙にいこう
08/12/09 12:58:13
>>89
インデントちゃんと付けてる?End Ifを入れる場所がおかしいよ
Sub Sample1()
Dim W As Workbook
Dim ows As Worksheet, ws As Worksheet
Dim c As Integer
Set ws1 = ThisWorkbook.ActiveSheet
Set ows = ActiveSheet
c = 2
For Each W In Workbooks
If W.Name <> ThisWorkbook.Name Then
For Each ws In W.Worksheets
ows.Cells(12, c).Value = ws.Name
Range(ows.Cells(13, c), ows.Cells(1013, c)).Value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).Value
c = c + 1
Next ws
End If
Next W
End Sub
91:名無しさん@そうだ選挙にいこう
08/12/09 13:14:08
>>90
ありがとうございます。
でも上記のものをコピペして使ってもまだ、自分自身のセルから
データを転送するようなのですが、
これはどうすれば良いのでしょうか?
92:名無しさん@そうだ選挙にいこう
08/12/09 13:17:41
こうかな?
If W <> ThisWorkbook Then
93:名無しさん@そうだ選挙にいこう
08/12/09 13:53:11
変な並びで作成されてしまった住所リストを普通のリストの形に並び替える方法がわかりません。
A1:100−0000 B1:100−0001 C1:201−3000
A2:住所ゴニョ01 B2:住所モニャ02 C2:住所ホニャ03
A3:社名ムニャ01 B3:社名モニョ02 C3:社名ヘニョ03
A4: 空 白 行
A5:次のデータ
・
・
のようになっており、非常に使いづらいのです。
しかも規則正しく並んでいるわけではなく、時々データが入っていなかったりします。
1レコード?分だけ飛び飛びで後から削除したような形です。
前任者に軽い怒りを覚えてます><
よろしくお願いします。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 リファレンスを見ながら格闘して負ける程度です
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル テーブル 並び替え
94:名無しさん@そうだ選挙にいこう
08/12/09 14:00:40
>>93
質問者に軽い怒りを覚えてます
95:名無しさん@そうだ選挙にいこう
08/12/09 14:12:16
>>>92
このメソッドには対応していません。というエラーが出るのですが・・・
なんなんでしょうか?
これは?
96:名無しさん@そうだ選挙にいこう
08/12/09 14:24:12
>>93
オートフィルタで空白行以外
コピーして貼り付け
97:名無しさん@そうだ選挙にいこう
08/12/09 14:29:50
>>93
4セル1組で並んでるなら
2列目の先頭から最後尾を1列目の最後尾の1セル後に挿入(もしくは貼付)
1レコードずつ横に並べたければこの後、別シートにでも関数で並べれば?
縦になってるやつを横にするのはROWやINDIRECTやOFFSETとか使ってやってる例が
過去スレとかにいっぱいある
>>94
激しくではないが同意
>>95
.Nameで比較して問題ないはず
デバッグで条件通りに動いているか見てみるべき
Ifとその下のForにブレークポイント置いてその条件の時に
処理を飛ばしているか確認してみるんだ
Ifの条件をウォッチ式に追加しておくと分かりやすい
98:93
08/12/09 14:35:02
ごめんなさいよく解りませんでした。結局コピペするしかないって事ですね。ありがとうございました<><><><
99:97
08/12/09 14:40:17
・・・前言撤回して少し訂正
>>94
激しく同意
100:名無しさん@そうだ選挙にいこう
08/12/09 14:50:44
質問があります。
実験結果を散布図に表示したいのですが、点をグループごとに色分けしたいです。
「やろうとしていることは、Aグループに所属する点は赤色
Bグループに所属する点は青色」
というように色づけをして、あとはそれぞれの点を
x軸、y軸の値よりプロットするだけです。
形式は
「グループ,x,y」
という形のcsvファイルから読み込む予定です。
A,312,789,
B,546,111,
という感じです。
もしよろしければ、アドバイス頂けないでしょうか。よろしくお願いします。
101:95
08/12/09 14:53:22
>>97
ありがとうございます。
マクロのおいてある場所が、現在開いているファイルではなく、002.xlsファイルにあったため、
うまくいっていないことが分かりました。
でも一応ブレークポイント、ウォッチ式についても教えて頂けないでしょうか?
それと
If W.Name <> ThisWorkbook.Name And W.Name <> "PERSONAL.XLS" Then
でPERSONAL.XLSを除外できないのはなぜなのでしょうか?
何卒よろしくお願い致します。
102:名無しさん@そうだ選挙にいこう
08/12/09 15:09:21
Andでやるからだろ
そのマクロをPERSONAL.XLSに入れてる場合にしか引っかからないよ
ブレークポイント URLリンク(www.vba-world.com)
ウォッチ URLリンク(www.asahi-net.or.jp)
少しはヘルプやネットで検索しような・・・
103:名無しさん@そうだ選挙にいこう
08/12/09 15:45:50
>>そのマクロをPERSONAL.XLSに入れてる場合にしか引っかからないよ
ではどうしたら良いのでしょうか?
皆目検討がつかないのですが・・
104:名無しさん@そうだ選挙にいこう
08/12/09 15:50:33
And→Or
105:名無しさん@そうだ選挙にいこう
08/12/09 16:13:58
motarouくんの応用力のなさはガチだな、、、
106:名無しさん@そうだ選挙にいこう
08/12/09 16:48:22
>>104
orにするとW.Name <> ThisWorkbook.Nameの方も無効になってしまったのですが、
なんなんでしょうか?
107:名無しさん@そうだ選挙にいこう
08/12/09 17:01:07
使用ソフト:EXCEL2003
ハイパーリンクについて質問させてください。
1.セルにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
2.オブジェクトにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
はできたのですが、
3.セルにハイパーリンクを設定して、特定のオブジェクトに飛ぶ。
4.オブジェクトにハイパーリンクを設定してオブジェクトに飛ぶ。
3.4.は可能ですか?
できる場合、方法も教えていただけると助かります。
宜しくお願いいたします。
108:名無しさん@そうだ選挙にいこう
08/12/09 17:13:46
>>106
よく見たら<>だからAndで合ってるのかw
もしかして条件が足りないのでは?
これならどう?
If W.Name <> ThisWorkbook.Name And W.Name <> ows.Parent.Name And W.Name <> "PERSONAL.XLS" Then
109:名無しさん@そうだ選挙にいこう
08/12/09 17:15:51
【1 OSの種類 .】 Windows XP SP2
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルの中の文字とスペースを同時に何個か消したいのですが、
消したい文字は必ずセル入力の最初にありそのあとに全角スペースが
あります。文字数は一緒ですが文字は違う場合があります。例えば、
ABC 123456
ABC 2344567
ABC 44444
BBB 5568777
のようになっていて最初のアルファベット3文字だけ消して
123456
2344567
44444
5568777
というようにすることはできないのでしょうか?
宜しくお願い致します。
110:109
08/12/09 17:19:24
>>109
× のようになっていて最初のアルファベット3文字だけ消して
○ のようになっていて最初のアルファベット3文字と全角スペースを消して
111:名無しさん@そうだ選挙にいこう
08/12/09 17:20:44
>>100
AとBのデータをきっちり分けないとだめ。
作業列に移してもいいし、ソートしてもいい。方法はいくつもあるから自分が一番簡単だと思う方法で。
たとえばこんなふうに。
A列=Aグループのx
B列=Aグループのy
C列=Bグループのx
D列=Bグループのy
112:名無しさん@そうだ選挙にいこう
08/12/09 17:21:58
>>109
最初の3文字を削るだけなら
=MID(A1,4,99)
113:名無しさん@そうだ選挙にいこう
08/12/09 17:23:23
>>110
アルファベット3文字と全角スペース1個、あわせて4文字を削るってことは5文字目以降を残すってことだから
=MID(A1,5,99)
114:名無しさん@そうだ選挙にいこう
08/12/09 17:27:57
>>103
抜き出したデータをまとめるブックがあるでしょ。そのブックにマクロを登録するんだよ。
VBEを起動して左側のツリーを見ると、モジュールがどのブックに属しているかがわかるから。
115:名無しさん@そうだ選挙にいこう
08/12/09 17:43:29
>>109
データ/区切り位置
ウイザードに沿っていけば簡単にできるよ
詳細はヘルプで確認してね
116:名無しさん@そうだ選挙にいこう
08/12/09 17:49:13
すいません、>>107ですが、テンプレ見落としてました。
【1 OSの種類 .】 Windows xp pro
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ハイパーリンク オブジェクト excel
宜しくお願いいたします。
ハイパーリンクについて質問させてください。
1.セルにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
2.オブジェクトにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
はできるのですが、
3.セルにハイパーリンクを設定して、特定のオブジェクトに飛ぶ。
4.オブジェクトにハイパーリンクを設定してオブジェクトに飛ぶ。
3、4は事はできますか?
できる場合、方法も教えていただけると助かります。
宜しくお願いいたします。
117:名無しさん@そうだ選挙にいこう
08/12/09 17:55:05
>>106
Orで出来ることはAndでもできる。
If foo<>"hoge"x And foo<>"hage" And foo<>"huga" Then
'処理
End If
これをOrで書けば
If foo="hoge" Or foo="hage" Or foo<> "huga" Then
Else
'処理
End If
となる。
Select Caseで書いた方がいいと思うが。
118:名無しさん@そうだ選挙にいこう
08/12/09 17:57:19
すまん、最初の"hoge"の後ろのxはゴミだ。
119:名無しさん@そうだ選挙にいこう
08/12/09 18:02:04
>>108
うおおおお、うまくいきました。
ows.Parent.Name And W.Name って何なんですか?
120:名無しさん@そうだ選挙にいこう
08/12/09 18:03:17
>>116
URLリンク(www.kotaete-net.net)
解決にはなっていないが代案なら出てる
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4512日前に更新/304 KB
担当:undef