重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

フォルダのなかに
エクセルBOOKが10個あります。
いずれのBOOKのシート1のA1に
数値が入力されています。
この合計額を集計のBOOKに集計するには
どうしたらいいでしょうか。

質問者からの補足コメント

  • うーん・・・

    他のBookのセルを参照するには
     = ”[” + ファイル名(拡張子付き) + ”]” シート名 + ”!” + セル番地
     =[example.xlsx]Sheet1!A1

    [” + ファイル名(拡張子付き) + ”]この部分をフォルダのなかに
    あるエクセルデータとしたい。

    方法をおしえてください。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/11/10 19:43
  • うーん・・・

    条件はフォルダの中にエクセルデータがあれば
    エクセルのシート1のA1の値を
    合計する
    あるサイトから見つけました。
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folderObj = fso.GetFolder("C:\Users\xxx\Desktop\vba")
    For Each fileObj In folderObj.Files
    'ファイル名判定
    If fileObj.Name Like "*.xlsx" Then   
    ただこのコードはコピーだけなので条件とあいませんが

    Consolidate _Sources:=Array("'[Book2]1学期'!R2C3:R100C7",
    これをりようすればなんとかいけそうな感じですが一週間経過しました。

    No.4の回答に寄せられた補足コメントです。 補足日時:2018/11/10 20:33

A 回答 (6件)

No3です



前回答を読んではいないみたいなので、追加で回答したところで意味はないのだろうと思いますが、一応・・・

Sub Sample()
 Dim fileName As String, res As String
 Dim data, total

 Const folderPath = "C:\tmp" '←対象フォルダのパス
 total = 0

 fileName = Dir(folderPath & "\*.xls")
 Do While fileName <> ""
  data = ExecuteExcel4Macro("'" & folderPath & "\[" & fileName & "]Sheet1'!R1C1")
  If IsNumeric(data) Then total = total + data
  res = res & fileName & " / " & CStr(data) & vbCrLf
  fileName = Dir()
 Loop

 MsgBox res & vbCrLf & "数値の合計 = " & total
End Sub
    • good
    • 0
この回答へのお礼

助かりました

貴重な時間有難うございました。
試したところ、おもわず
わぁ、すゴィとうなってしまいました。
なにもいうことありません。
有難うございました。

お礼日時:2018/11/13 08:34

一つずつ入力すればいい。



自分ならバッチファイルでテキストに出力した物を貼り付けるけどね。
バッチファイルが何なのか分からないなら手を出さないようにしましょう。
本来の目的はそこではありませんよね。
    • good
    • 1
この回答へのお礼

バッチファイルが何なのか分からないです
お時間あれば教えてください。

お礼日時:2018/11/13 08:35

No.2です。



No.2で回答した件は確か以前複数Bookのシートにあるセル範囲を串刺しにって質問されてたと記憶してたからです。
もし今回の件とは違う又は記憶違いなら忘れて下さい。
この回答への補足あり
    • good
    • 1
この回答へのお礼

いつも有難うございます。

お礼日時:2018/11/13 08:35

こんにちは



>この合計額を集計のBOOKに集計するには
>どうしたらいいでしょうか。
「どうしたら」というほどのこともなく、No1様の回答のように関数式を設定しておくか、VBA等を利用して集計するかのどちらかではないでしょうか。
(関数利用に関してはNo1様の回答をご覧ください)

VBA利用の場合は、対象ブックを順に参照してゆくことになりますが、ご質問のように、ブックの固定位置のセル値だけを集計したいのであれば、いちいち OPEN - CLOSE しなくても、ExecuteExcel4Macroを利用すると値を直接取得することができますので便利かもしれません。
(処理速度の向上が図れる可能性も高いです)
https://msdn.microsoft.com/ja-jp/vba/excel-vba/a …
    • good
    • 3
この回答へのお礼

いつも有難うございます。

お礼日時:2018/11/13 08:35

実際本当にBook内の1つのシートの1セルの値だけを集めるというのか、あるいはそれを拡張させて対応するのかでも違うんじゃないでしょ

うか?
    • good
    • 2
この回答へのお礼

有難うございました。

お礼日時:2018/11/13 08:36

串刺し計算は同じBookのシート間で行うものですので、この場合には使えません。


一つ一つBookを指定して合計を求めるようにしましょう。

・・・
他のBookのセルを参照するには
 = ”[” + ファイル名(拡張子付き) + ”]” シート名 + ”!” + セル番地
 =[example.xlsx]Sheet1!A1
のように指定します。

 =[example1.xlsx]Sheet1!A1 + [example2.xlsx]Sheet1!A1 + [example3.xlsx]Sheet1!A1
のようにして合計を求めましょう。
この回答への補足あり
    • good
    • 5
この回答へのお礼

有難うございました。

お礼日時:2018/11/13 08:36

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