[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『各シートの値書出 「一覧」へ』(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.