マクロは素人なのでご教授お願いします。
Excelブック一つにシートが20あったとします。
○20シート全ての同座標セルに、ある商品の「合計」と「個数」の値がある
○「集計」シートが別にあり、「sheet1」から「sheet20」までを連番で一覧にしてある
該当のセルに「合計」と「個数」の値を参照させる
<「集計」シート 結果例>
A B C
1 シート名 合計数 個数(表見出し)
2 sheet1 78 5
3 sheet2 90 17
4 sheet3 112 224
また、以前まったくの逆の条件で質問をしまして、良回答いただきました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=715150
参考までにご覧になってみて下さい。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
#2です。
>全sheet数はどこにも記載されていないがいいのか
ForEach文を使ってますが、本回答の場合Shをワークシートに定義してSetしているので、ワークシート
1つ1つ(Each)のすべてに付いて、当たってくれます。それをSh.○○で捉えて、処理を行います。
しかし合計を出すシートだけは、加算の対象からはずさないといけないので、If sh.Name = "sheet6" Then で外しています。
>なんで行数を「i」に置き換えているのか。
Worksheets("sheet6").Cells(1, "A") = "合計" '項目見出し 、で1行目には見出し漢字をセットしたのですから
計数は第2行目以下に書きこまないといけません。
だからスタート行を指定するために、i=2としてます。
本番の表の構成から、第3行目からスタートもあり得ます。
>なんで行数を「i」に置き換えているのか。
持っていく先のシートの指定行は、1データセットしたら
次は1行下へセットしないといけません。だからiを変数にして、1づつ増やしていくわけです。そうしないと同じ
セルに次々書いて、最後のものしか残りませんから。
>シート名の連番が飛び飛びになったり
全部のシートでなく、シート名を指定して処理をしたいときもあるでしょう。その場合は人間が指定してやらないといけません。実行時に、Inputboxで聞いてやるとか、プログラムコードの中に、配列でシート名を定義します。
t=Array("aaa","bb","c","計数1")(Array関数)
(aaa,bb,等がシート名)でt(0)でシート名aaaを使えます。
imogasiさん、再びの詳しい回答ありがとうございます。
本当に助かりました。
これが出来るのと出来ないのとでは、毎日のお仕事の効率に影響があったんです。
これを機に、私自身もマクロのお勉強をしないといけない、とつくづく思いました。
どうもありがとうございました。
No.2
- 回答日時:
VBEの標準モジュールに下記を貼りつける。
集約シートはSheet6と仮定してます。
合計数だけを取り上げてます。
Sub test02()
Dim sh As Worksheet
Worksheets("sheet6").Cells(1, "A") = "合計" '項目見出し
i = 2
For Each sh In Worksheets
If sh.Name = "sheet6" Then '合計シートを除いた全シートにつき
Else
Worksheets("sheet6").Cells(i, "A") = sh.Name 'シート名
Worksheets("sheet6").Cells(i, "B") = sh.Range("b4") '
'各シートの合計セル
i = i + 1 '直下行を指す
End If
Next
End Sub
(変更すべき箇所)
本テスト6シート->20シート
集約シートSheet6-> 合計シート名は
項目名-> 合計数のほかに個数も増やす
合計のあるセル-> B4で良いか?
シート名が漢字名とか飛び飛びのシートの場合
(本例と離れるが)
等の時の修正のし方わかりますかね。
imogasiさん、回答ありがとうございます。
出来ました!
以前の質問に加えて、詳しい回答嬉しいです。
ただ出来上がるのに時間かかりました。
詳しく回答いただいたのにもかかわらず、どの場所を、私のブック仕様に変更したらいいのか、イマイチ分からず、いろんなところをいじってました。
特に、
○全sheet数はどこにも記載されていないがいいのか
○なんで行数を「i」に置き換えているのか。
>i = 2
などなどです。
もちろん、シート名の連番が飛び飛びになったり、「時の修正って何?」状態ですから、その対処も分かりません(-_-;)
これらVBにとっては初歩の初歩でしょうが、しばらく締め切らずにいるので、もしよろしければ、お時間のある時にお教えくださいm( _ _ )m
どうもありがとうございました。
No.1
- 回答日時:
これで如何ですか。
B2セルとC2セルに次の式を入れて、下方向にコピーします。
B2: =INDIRECT(A2&"!B2") C2: =INDIRECT(A2&"!C2")
合計数はsheet1・・・sheet3のB2セルにあります。
ki-aaaさん、さっそくの回答ありがとうございます。
試してみたんですが、「#REF」エラーが出てしまい上手くいきませんでした。
マクロに加えて関数もダメな私には何がいけないのかさっぱりです(^^;)
でも、関数でもやろうと思えば出来るんですね。
一つお勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) VBAの参照先のファイル名をセルに書いて代入したい 2 2022/04/04 13:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのシートを、まとめて表示...
-
Excel、同じフォルダ内のExcel...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
VBAでシートコピー後、シート名...
-
前の(左隣の)シートを連続参...
-
Accessのスプレッドシートエク...
-
EXCEL:同じセルへどんどん足し...
-
エクセルで前のシートを連続参...
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
excelでシート毎の最終更新日を...
-
シートの保護のあとセルの列、...
-
別シートの最終行に貼り付けす...
-
エクセルでファイルを開いたと...
-
エクセルでシート名を自動入力...
-
エクセルで毎回1枚目のシートを...
-
エクセル計算式解説
-
シート1に列挙したNGワードを...
-
Accessのマクロを使用してExcel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで同じシートのコピーを一...
-
VBAでシートコピー後、シート名...
-
別シート参照のセルをシート毎...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイルを開いたと...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
前の(左隣の)シートを連続参...
-
EXCELで1ヶ月分の連続した日付...
-
Excel VBについての質問です。
-
複数シートの特定の位置に連番...
-
エクセルで前のシートを連続参...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
Accessのスプレッドシートエク...
-
Excel、同じフォルダ内のExcel...
-
excelでシート毎の最終更新日を...
-
Excelのシートを、まとめて表示...
-
EXCELで同一フォーマットのシー...
おすすめ情報