[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『各シートの値書出 「一覧」へ』(taguchi)
複数のシートの決まったセルの値を「一覧」最右に
あるシートに書き出したいのですが、私のマクロの
知識では出来そうにないので質問させていただきます。
概略は以下です。
同一仕様のシートが複数(シート数は不特定数5〜15シート程度)
各シートの値(文字・関数の計など)「一覧」シート手前に
「書庫」シートが、あるがこれは書出不要
最右に「一覧」シート
上記「一覧」シートの構成
1行目は空き行
2行目見出し行
A B C D E F G H I 2 3 4 ・ ・ 見出し名 A2:シート名 B2:名称 C2:会社名 D2:START E2:END F2:合計金額 G2:仕入れ H2:利益 I2:計画金額
A3からデータ書出行
左側シートから順に書出したい。
各シートの場所
A3に最左のシート名
B3にシートのE3値(文字データ)
C3にシートのC4値(文字データ)
D3にシートのG4値(日付データ)
E3にシートのG5(日付データ)
F3にシートのI26(関数の集計値)数値
G3にシートのC7(関数の集計値)数値
H3にシートのN7(関数の集計値)数値
I3にシートのN9(数値)
A4から左から2枚目のシートの上記同様セル値書出
〜
複数枚シート同様です
「書庫」「一覧」シートは対象外
説明が下手でお解りになるか心配ですが
ご教授お願いします。
尚、書出セル増減があるかもですのでのちに改良できるような
仕様で、出来ればお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
おはようございます。
方法は、色々あるでしょうが、、良かったらどうぞ!
では、、、では、、、
Option Explicit Sub てすと() Dim MyA As Variant Dim MyAry As Variant Dim ws As Worksheet Dim k As Long MyAry = Application.Transpose(Sheets("一覧").Range("A2:I2").Value) For Each ws In ThisWorkbook.Worksheets If (ws.Name <> "書庫") * (ws.Name <> "一覧") Then MyA = ws.Range("C3").Resize(24, 12).Value ReDim Preserve MyAry(LBound(MyAry, 1) To UBound(MyAry, 1), LBound(MyAry, 2) To UBound(MyAry, 2) + 1) k = UBound(MyAry, 2) MyAry(1, k) = ws.Name MyAry(2, k) = MyA(1, 3) MyAry(3, k) = MyA(2, 1) MyAry(4, k) = MyA(2, 5) MyAry(5, k) = MyA(3, 5) MyAry(6, k) = MyA(24, 7) MyAry(7, k) = MyA(5, 1) MyAry(8, k) = MyA(5, 12) MyAry(9, k) = MyA(7, 12) End If Next With Sheets("一覧") 'ここは状況に合わせて変更してください。 Intersect(.Range("A:I"), .Rows("2:" & .UsedRange.Rows.Count)).ClearContents .Range("A2").Resize(UBound(MyAry, 2), UBound(MyAry, 1)).Value = Application.Transpose(MyAry) End With Erase MyA, MyAry End Sub
出力先を都度、クリアにした方がいいですよね。ちょっと追記です。 (SoulMan) 2019/06/01(土) 07:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.