- 締切済み
複数のエクセルデータを計算
こんにちは。 過去質問を検索してみたのですが、イマイチ分からないので教えてください。 エクセルで同じフォーマットで作ったファイルが300以上あります。 そこの同じ部分(H14-J20)をそのままコピーして新しいエクセルファイルで集計したいのですが、どのようにすればよろしいでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
他のEXCELブックから特定の範囲を取り出して、今開いているシートのアクティブセルを先頭とする範囲に複写するマクロです。 コピーする範囲はH14:J20にしましたが、CONST文を書き換えれば変更は可能です。 またシート名も固定とさせていただいていますので、CONST文のXXXXXの部分を書き換えてください。 このマクロはVBE画面の標準モジュールにペーストして動かしてみてください。 Sub 他ブック範囲COPY() Dim idxR, idxC, pos, ofROW, ofCOL As Integer, flName Dim curROW, curCOL As Long Dim wkSTR1, wkSTR2, wkSTR3 As String Const startROW As Long = 14, lastROW As Long = 20 '行範囲を指定 Const startCOL As Long = 8, lastCOL As Long = 10 '列範囲を指定。H:8、J:10(A列を1とする順番) Const shtNAME As String = "XXXXX" 'シート名は固定。ここで指定する flName = Application.GetOpenFilename(MultiSelect:=False) 'ファイル名加工 pos = InStrRev(flName, "\") wkSTR1 = Left(flName, pos) wkSTR2 = Right(flName, Len(flName) - pos) 'データ取得 ofROW = 0 ofCOL = 0 For idxC = startCOL To lastCOL For idxR = startROW To lastROW wkSTR3 = "'" & wkSTR1 & "[" & wkSTR2 & "]" & shtNAME & "'!R" & idxR & "C" & idxC Selection.Cells(1, 1).Offset(ofROW, ofCOL) = ExecuteExcel4Macro(wkSTR3) ofROW = ofROW + 1 Next idxR ofROW = 0 ofCOL = ofCOL + 1 Next idxC End Sub 動作は一応確認しました
- ipsum11
- ベストアンサー率21% (55/251)
何を集計したいのかがわかりませんが、わかる範囲内でお答えします。 方法としては、 1.手作業で300ファイルの該当箇所を集計ファイルにコピーする。で、集計。 2.VBAで300ファイルの該当箇所を集計ファイルにコピーする。で、集計 が考えられます。 合計が出したいのであれば、オートSUMを使って集計してください。
補足
回答ありがとうございます。 VBAで書いてみたのですが、イマイチうまくいかないのです。 結局各ファイルの該当箇所が抽出できればいいのですけど、、、、 書き方を教えていただければ、と思い、質問してみました。
お礼
ありがとうございました。 できれば、300のファイルを開けずに処理したかったのです。。。もうちょっと考えて見ます。