プロが教えるわが家の防犯対策術!

会社の各部門の予算を集計する担当となりました。

各部門から上がってきた同一フォーマットのシートを1つのブックにまとめているのですが、各部門の予算が横一列に並んだシートを作りたいのです。

(1)シート名に各部門名が入っており、それをA1、B1、C1・・・と横方向に並べたい
(2)各部門の数値を(1)の下に並べたい
(3)できれば、『START』『END』のシートに挟まれたシートだけ(1)(2)が行なわれるようにしたい

http://okwave.jp/qa3315669.html の方での回答者様のマクロを流用しておりましたが、
逐一コピーしたときに『OK』を押すのが大変なのと、シート範囲・枚数の変更ができないのが不便でしたので・・・

よろしくお願い致します。

A 回答 (2件)

#1さんご指摘の通り、不明な点がありますので、想像で補います。


・まとめるシートの名前を「統合」とします。
・「各部門の数値」は各部門シートのA2セル(だけ)に入っているものとします。
・「START」シートと「END」シートの内容は無視することとします。
以上の条件でコードを書いてみました。

ご参考になれば。

Sub sample()
Dim sheetIdx As Integer
Dim colIdx As Integer
Dim pFlg As Boolean
pFlg = False: colIdx = 0
For sheetIdx = 1 To Sheets.Count
If Sheets(sheetIdx).Name <> "統合" Then
If Sheets(sheetIdx).Name = "END" Then Exit For
If pFlg Then
colIdx = colIdx + 1
Sheets("統合").Cells(1, colIdx).Value = Sheets(sheetIdx).Name
Sheets("統合").Cells(2, colIdx).Value = Sheets(sheetIdx).Range("A2").Value
End If
If Sheets(sheetIdx).Name = "START" Then pFlg = True
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
また、説明足らずにもかかわらず、記載いただいたコードは
ほぼ希望通りのものでした。ありがとうございます。

お礼日時:2007/12/28 09:19

> 逐一コピーしたときに『OK』を押すのが大変なのと、シート範囲・枚数


> の変更ができないのが不便でしたので・・・

んーー、、不便と言われても参考にされた URL 先に書かれたマクロは、
実行しても OK を押すような場面はないはずですし....

説明不足に思います。

> (2)各部門の数値を(1)の下に並べたい

読者には、数値と簡単に言われても何がなんだかわかりません。

 ・単一セルなのか複数セルの範囲のことなのか?
 ・範囲であるなら、
    ・固定範囲なのか?
    ・プログラム的にその範囲を求めなければならないものなのか?
 ・セルの値のみ転記すれば良いのか、書式も必要なのか?

> (3)できれば、『START』『END』のシートに挟まれたシートだけ...

マクロの実行のためだけに、『START』等のシートを挿入するのですか?

例えば、複数のシートを選択した状態、つまり作業グループになっている
シートについてのみ処理するようにしてみては?

' // 作業グループのワークシート名を順次表示するサンプル
Dim Sh As Object
For Each Sh In ActiveWindow.SelectedSheets
  If TypeOf Sh Is Worksheet Then
    MsgBox Sh.Name
  End If
Next
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!