No.3ベストアンサー
- 回答日時:
未検証!ですけどね。
Sub megu()
Const wbB As String = "'[B-Book.xlsx]Sheet1'!" 'ブック名・拡張子・シート名は適宜修正
With Worksheets("Sheet1") 'A-Bookの書き出すシート名は適宜修正
With .Range("C6:L23")
.Formula = Join(Array("=SUMIFS(", "$L:$L,", "$H:$H,$B6,", "$F:$F,C$2,", "$B:$B,C$5)"), wbB)
.Value = .Value
End With
End With
End Sub
検証させて頂き作動を確認致しました。
>セルの絶対参照・相対参照の $ には触れていないですよね?
実際のsheetに置き換えをして変更してなかったのが原因でした。
度々のご回答に感謝致します。
ありがとうございました!
No.7
- 回答日時:
あ、あとセルの絶対参照・相対参照の $ には触れていないですよね?
.Formula = Join(Array("=SUMIFS(", "$L:$L,", "$H:$H,$B6,", "$F:$F,C$2,", "$B:$B,C$5)"), wbB)
この中のものです。
結果としてどうなったのかは、
.Value = .Value
をコメントにして数式を表示させてみればわかりやすかったかも。
遅くなりましたが検証致しました。
サンプルではD2:L2まで空欄でしたので最初はC6:C23以外は「0」表示
でしたが、>.Value = .Value をコメントして数式表示をして修正いたしましたら全取得が出来ました。
ありがとうございました!
No.6
- 回答日時:
No.4です。
No.3のコードを画像を基に作成したファイルで検証した所では問題なく抽出できました。
ブック名等を変更する際に ' [ ] ! などを消したとか(でもエラーになるかな?)、数値と数字の違いがあるとかそう言う類ではないのかなって感じます。
なので私の方では修正すべき箇所がわかりません。
ADODB使っても良いのですけど、大掛かりなコードになりそうですしね。
No.5
- 回答日時:
こんばんは、
C2の次はD2・・・L2 こんな感じでキーは変わるので良いのでしょうか?
結構な行数がありますが、
データ作るのが良くわからず、未検証ですがどうでしょう。。
添付図のA-Bookを元にしています。シート名不明の為、インデックス1です。
Sub sample()
Dim mySh As Worksheet
Dim ary(), c As Range
Dim key1 As String, key2 As String
Dim i As Long, j As Long
Set mySh = ThisWorkbook.Worksheets(1)
Application.ScreenUpdating = False
For i = 1 To 10
key1 = mySh.Cells(2, i + 2).Value
key2 = mySh.Cells(5, i + 2).Value
Windows("当月対象.xlsx").Activate
With ActiveSheet
With .Range("A1:O31121")
.AutoFilter Field:=6, Criteria1:=key1
.AutoFilter Field:=2, Criteria1:=key2
End With
For Each c In .Range("H2:H" & .AutoFilter.Range(.AutoFilter.Range.Count).Row).SpecialCells(xlCellTypeVisible)
For j = 6 To mySh.Cells(Rows.Count, "B").End(xlUp).Row
If c.Value = mySh.Cells(j, "B").Value Then
ReDim Preserve ary(j - 6)
ary(j - 6) = c.Offset(, 4).Value
End If
Next j
Next c
.Range("A1:O31121").AutoFilter
End With
On Error Resume Next
mySh.Range("B6").Offset(, i).Resize(UBound(ary) + 1) = WorksheetFunction.Transpose(ary)
Erase ary
Next i
Application.ScreenUpdating = True
Windows("受渡書.xlsm").Activate
End Sub
ご返答、遅くなりまして申し訳ございません。
>C2の次はD2・・・L2 こんな感じでキーは変わるので良いのでしょうか?
おっしゃる通りです。
6日まで検証できる環境ではないので後ほど検証させて頂きます。
楽しみです。
どうもありがとうございました。
No.1
- 回答日時:
Aブックの『D~L列まであり』ってC列と同様にと言う事?
特にB列の値は2行目・5行目の数値が変わったとしても変更はない?
Bブックがどうなっているのかが不明。
何となく数式でも行けそうな気もするけど?
SUMIFS関数とかで。(あ、VBA限定ではないのですかね。数式を埋め込んじゃえば。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) エクセルシートのPDFでの保存 2 2022/09/06 13:05
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- Visual Basic(VBA) Excel VBA マクロ 先頭行の固定とオートフィルター設定を全てのシートに適用したいです 1 2022/11/12 15:32
- iPad iPadでこんな誤作動あるの? 先週の土曜日、iPadで漫画を読んでいて、次のページをめくろうとした 1 2022/10/17 23:16
- Excel(エクセル) エクセル VBAでBook モジュールのプロシージァ(コード)に除外シートを設定したい 1 2023/01/11 15:53
- Excel(エクセル) エクセルのハイパーリンクで別BOOKを開く 3 2022/10/26 18:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba SelStart、SelLen教えてく...
-
現在のブックを閉じないで、マ...
-
ExcelVBA シート名を複数セルか...
-
ユーザーフォームに別シートか...
-
【VBA】マクロの入ったファイル...
-
VBA listBoxから
-
VBAコンボボックスで選択した値...
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA実行後に元のセルに戻りたい
-
Excel-VBAのmsgBox()の不思議
-
エクセルのマクロについて教え...
-
FileCopy時のエラー
-
Excelのマクロでワードのテキス...
-
【ExcelVBA】インデックスが有...
-
Outlookの「受信日時」「送信者...
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報
ありがとうございます。
>Aブックの『D~L列まであり』ってC列と同様にと言う事?
そうです。
Bブックのデータの①F列→②B列でソートしてAブックのB6からB23の値をBブックH列から探し転記
したいのです。
めぐみんさん、ありがとうございました。
検証致しました。
Bブックより抽出データの取得は出来ませんでした。
Bブックは少し加工しましたが添付の通りです。
実作業をマクロの記録でコードを書き出しました。
①
Sub Macro1()
Range("C2").Select 'Aブック
Selection.Copy
Application.WindowState = xlNormal
Windows("当月対象.xlsx").Activate
ActiveSheet.Range("$A$1:$O$31121").AutoFilter Field:=6, Criteria1:="121543029" ’Aブック_C2の値の場合。
Windows("受渡書.xlsm").Activate
Range("C5").Select ’C5:L5の場合を繰り返す
Application.CutCopyMode = False
Selection.Copy
続く・・・
②
Windows("当月対象.xlsx").Activate
ActiveSheet.Range("$A$1:$O$31121").AutoFilter Field:=2, Criteria1:="1310300101" ’Aブック_C5の値の場合。
Windows("受渡書.xlsm").Activate
Range("B6").Select 'B6の値の場合。 B6:B23の場合をC5:L5まで順次抽出する。
Application.CutCopyMode = False
Selection.Copy
続く・・・
Windows("当月対象.xlsx").Activate
ActiveSheet.Range("$A$1:$O$31121").AutoFilter Field:=8, Criteria1:="420" 'B6の値の場合。コピーしてC6に張付ける。
Range("L19597").Select
Application.CutCopyMode = False
Selection.Copy
Windows("受渡書.xlsm").Activate
Range("C6").Select ’対象はC6:L23
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
End Sub
Qchan1962様
ありがとうございました。
遅くなりましたが検証致しました。
添付の赤字部分が取得出来ませんでした。
又、
>Windows("受渡書.xlsm").Activate
>End Sub
の部分ですがシート指定で作動を考えております。