Excel VBA 質問スレッド №1973 (解決済)
条件付き複数シートを集計したい!
投稿者 : Mow 投稿日時 : 2024/07/25(Thu) 11:43:45 OS : Mac OS X EXCEL : Excel 2016
下記条件でamountシートへ集計したいです。
For i などは試したのですが、起動せず、、、
どなたか教えていただけますでしょうか。
よろしくお願いいたします。
下記条件でamountシートへ集計したいです。
For i などは試したのですが、起動せず、、、
どなたか教えていただけますでしょうか。
よろしくお願いいたします。
Sub 集計() Sheets("amount").Cells.Clear Dim Date1, i Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3") Sheets("S").Range("A2").AutoFilter field:=5, Criteria1:=Date1 Sheets("S").Range("A1").CurrentRegion.Copy Sheets("amount").Range("A2") Sheets("S").AutoFilterMode = False Next Application.ScreenUpdating = True Sheets("amount").Select End Sub
スポンサーリンク
[返信 1] Re : 条件付き複数シートを集計したい!
投稿者 : さんこう 投稿日時 : 2024/07/25(Thu) 11:52:11
>条件付き複数シートを集計したい!
「複数シート」とは何でしょうか?
>下記条件でamountシートへ集計したい
「下記条件」とは何でしょうか?
「集計」とは、具体的にどうするのでしょうか?
>条件付き複数シートを集計したい!
「複数シート」とは何でしょうか?
>下記条件でamountシートへ集計したい
「下記条件」とは何でしょうか?
「集計」とは、具体的にどうするのでしょうか?
[返信 2] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 12:42:11
■[返信 1] さんこうさん(2024-07-25 11:52:11)の記事
> >条件付き複数シートを集計したい!
>
> 「複数シート」とは何でしょうか?
>
>
> >下記条件でamountシートへ集計したい
>
> 「下記条件」とは何でしょうか?
>
> 「集計」とは、具体的にどうするのでしょうか?
>
ご連絡いただきありがとうございます。
現在、下記コードを書いております。
今回の目的としては、例えばamountシート内にボタンを設置し、24/7/2と日付を入力すると、1つのブック内にある複数のシート(例えば、シート1・シート2....)から自動でフィルターをかけ、対象となる日程の列をamountシートへ移行したいと考えております。
また、各シートの列は日々増えていきます。
>Sub 集計()
> Sheets("amount").Cells.Clear
> Dim Date1
> Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3")
> Sheets("S").Range("A1").AutoFilter field:=5, Criteria1:=Date1
> Sheets("S").Range("A1").CurrentRegion.Copy Sheets("amount").Range("A2")
> Sheets("S").AutoFilterMode = False
> Application.ScreenUpdating = True
> Sheets("amount").Select
> End Sub
■[返信 1] さんこうさん(2024-07-25 11:52:11)の記事
> >条件付き複数シートを集計したい!
>
> 「複数シート」とは何でしょうか?
>
>
> >下記条件でamountシートへ集計したい
>
> 「下記条件」とは何でしょうか?
>
> 「集計」とは、具体的にどうするのでしょうか?
>
ご連絡いただきありがとうございます。
現在、下記コードを書いております。
今回の目的としては、例えばamountシート内にボタンを設置し、24/7/2と日付を入力すると、1つのブック内にある複数のシート(例えば、シート1・シート2....)から自動でフィルターをかけ、対象となる日程の列をamountシートへ移行したいと考えております。
また、各シートの列は日々増えていきます。
>Sub 集計()
> Sheets("amount").Cells.Clear
> Dim Date1
> Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3")
> Sheets("S").Range("A1").AutoFilter field:=5, Criteria1:=Date1
> Sheets("S").Range("A1").CurrentRegion.Copy Sheets("amount").Range("A2")
> Sheets("S").AutoFilterMode = False
> Application.ScreenUpdating = True
> Sheets("amount").Select
> End Sub
[返信 3] Re : 条件付き複数シートを集計したい!
投稿者 : さんこう 投稿日時 : 2024/07/25(Thu) 12:57:42
列が増えていくとかが謎ですが、とりあえずフィルターなしで
シートをまとめるところから作っていくとよろしいかと思います。
<vba シート 集約>
https://www.google.com/search?q=vba+%E3%82%B7%E3%83%BC%E3%83%88+%E9%9B%86%E7%B4%84
列が増えていくとかが謎ですが、とりあえずフィルターなしで
シートをまとめるところから作っていくとよろしいかと思います。
<vba シート 集約>
https://www.google.com/search?q=vba+%E3%82%B7%E3%83%BC%E3%83%88+%E9%9B%86%E7%B4%84
[返信 4] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 13:15:49
■[返信 3] さんこうさん(2024-07-25 12:57:42)の記事
> 列が増えていくとかが謎ですが、とりあえずフィルターなしで
> シートをまとめるところから作っていくとよろしいかと思います。
>
>
> <vba シート 集約>
> https://www.google.com/search?q=vba+%E3%82%B7%E3%83%BC%E3%83%88+%E9%9B%86%E7%B4%84
ご教授ありがとうございます。
シートまとめは、下記コードでできました!
昨日からVBAを始めたばかりで、無知すぎるのでさらにご教授いただきたいです。
下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
よろしくお願いいたします。
■[返信 3] さんこうさん(2024-07-25 12:57:42)の記事
> 列が増えていくとかが謎ですが、とりあえずフィルターなしで
> シートをまとめるところから作っていくとよろしいかと思います。
>
>
> <vba シート 集約>
> https://www.google.com/search?q=vba+%E3%82%B7%E3%83%BC%E3%83%88+%E9%9B%86%E7%B4%84
ご教授ありがとうございます。
シートまとめは、下記コードでできました!
昨日からVBAを始めたばかりで、無知すぎるのでさらにご教授いただきたいです。
下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
よろしくお願いいたします。
Sub matome() Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Application.ScreenUpdating = False '----全データシートの有無をチェックします sh_check '----列見出しをコピーします Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column '----シートのデータが2行以上の場合にコピーします If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub
[返信 5] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 13:16:26
ご教授ありがとうございます。
シートまとめは、下記コードでできました!
昨日からVBAを始めたばかりで、無知すぎるのでさらにご教授いただきたいです。
下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
よろしくお願いいたします。
ご教授ありがとうございます。
シートまとめは、下記コードでできました!
昨日からVBAを始めたばかりで、無知すぎるのでさらにご教授いただきたいです。
下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
よろしくお願いいたします。
Sub matome() Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Application.ScreenUpdating = False '----全データシートの有無をチェックします sh_check '----列見出しをコピーします Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column '----シートのデータが2行以上の場合にコピーします If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub
[返信 6] Re : 条件付き複数シートを集計したい!
投稿者 : さんこう 投稿日時 : 2024/07/25(Thu) 14:10:03
>下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
最初にご提示のあったコードにある、フィルターするところを組み合わせればよろしいかと思います。
↓イメージですので、動くかわかりませんが、こんな感じでしょうか。
'----シートのデータが2行以上の場合にコピーします
If lRow >= 2 Then
lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
.Activate
’ここでフィルターをかける
.Range("A2").AutoFilter field:=5, Criteria1:=Date1
.Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
>下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
最初にご提示のあったコードにある、フィルターするところを組み合わせればよろしいかと思います。
↓イメージですので、動くかわかりませんが、こんな感じでしょうか。
'----シートのデータが2行以上の場合にコピーします
If lRow >= 2 Then
lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
.Activate
’ここでフィルターをかける
.Range("A2").AutoFilter field:=5, Criteria1:=Date1
.Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
[返信 7] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 14:25:35
■[返信 6] さんこうさん(2024-07-25 14:10:03)の記事
> >下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
>
>
> 最初にご提示のあったコードにある、フィルターするところを組み合わせればよろしいかと思います。
>
>
> ↓イメージですので、動くかわかりませんが、こんな感じでしょうか。
>
> '----シートのデータが2行以上の場合にコピーします
> If lRow >= 2 Then
> lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
> .Activate
>
> ’ここでフィルターをかける
> .Range("A2").AutoFilter field:=5, Criteria1:=Date1
>
> .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
>
>
> ご教授ありがとうございます!
.Range("A2").AutoFilter field:=5, Criteria1:=Date1
こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
解決策はありますでしょうか?
よろしくお願いいたします。
■[返信 6] さんこうさん(2024-07-25 14:10:03)の記事
> >下記コードに例えば日次(24/7/2)が該当するデータのみを引っ張るようにするにはどうしたらいいでしょうか?
>
>
> 最初にご提示のあったコードにある、フィルターするところを組み合わせればよろしいかと思います。
>
>
> ↓イメージですので、動くかわかりませんが、こんな感じでしょうか。
>
> '----シートのデータが2行以上の場合にコピーします
> If lRow >= 2 Then
> lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
> .Activate
>
> ’ここでフィルターをかける
> .Range("A2").AutoFilter field:=5, Criteria1:=Date1
>
> .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
>
>
> ご教授ありがとうございます!
.Range("A2").AutoFilter field:=5, Criteria1:=Date1
こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
解決策はありますでしょうか?
よろしくお願いいたします。
[返信 8] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 14:27:01
現状のコードは下記のとおりです。
現状のコードは下記のとおりです。
Sub matome() Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Application.ScreenUpdating = False Dim Date1 Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3") '----列見出しをコピーします Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column '----シートのデータが2行以上の場合にコピーします If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range("A2").AutoFilter field:=5, Criteria1:=Date1 .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub
[返信 9] Re : 条件付き複数シートを集計したい!
投稿者 : さんこう 投稿日時 : 2024/07/25(Thu) 15:03:42
>こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
シートの状態にも影響されるはずなので、なんともいえませんが、
オートフィルターを解除するようにしてみたらいかがでしょうか。
>こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
シートの状態にも影響されるはずなので、なんともいえませんが、
オートフィルターを解除するようにしてみたらいかがでしょうか。
Sub matome() Dim i As Long Dim lRow As Long, lCol As Long, lRow2 As Long Application.ScreenUpdating = False Dim Date1 Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3") '----列見出しをコピーします Worksheets(1).Cells.ClearContents Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) If .AutoFilter Is Nothing Then .AutoFilterMode = False '★ lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column '----シートのデータが2行以上の場合にコピーします If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 .Activate .Range("A1").AutoFilter field:=5, Criteria1:=Date1 .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) .AutoFilterMode = False '★ End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub
[返信 10] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/25(Thu) 15:39:47
■[返信 9] さんこうさん(2024-07-25 15:03:42)の記事
> >こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
>
> シートの状態にも影響されるはずなので、なんともいえませんが、
> オートフィルターを解除するようにしてみたらいかがでしょうか。
>
>
> Sub matome()
> Dim i As Long
> Dim lRow As Long, lCol As Long, lRow2 As Long
> Application.ScreenUpdating = False
> Dim Date1
> Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3")
> '----列見出しをコピーします
> Worksheets(1).Cells.ClearContents
> Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1")
> For i = 2 To Worksheets.Count
> With Worksheets(i)
> If .AutoFilter Is Nothing Then .AutoFilterMode = False '★
> lRow = .Cells(Rows.Count, 1).End(xlUp).Row
> lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
> '----シートのデータが2行以上の場合にコピーします
> If lRow >= 2 Then
> lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
> .Activate
>
> .Range("A1").AutoFilter field:=5, Criteria1:=Date1
>
> .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
> .AutoFilterMode = False '★
> End If
> End With
> Next i
> Worksheets(1).Activate
> Range("A1").Select
> Application.ScreenUpdating = True
> End Sub
>
ご教授いただきありがとうございます。
ご教授いただいた内容で、作動できましたが全てのデータが出力されてしまいました,,,,
field:=5, Criteria1:=Date1
を適応させるための方法をお教えください。
よろしくお願いいたします。
■[返信 9] さんこうさん(2024-07-25 15:03:42)の記事
> >こちらの部分で実行時エラー '1004 rangeクラスのautofilterメソッドが失敗しました と表示されてしまいました,,,
>
> シートの状態にも影響されるはずなので、なんともいえませんが、
> オートフィルターを解除するようにしてみたらいかがでしょうか。
>
>
> Sub matome()
> Dim i As Long
> Dim lRow As Long, lCol As Long, lRow2 As Long
> Application.ScreenUpdating = False
> Dim Date1
> Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例24/ 7 /3")
> '----列見出しをコピーします
> Worksheets(1).Cells.ClearContents
> Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1")
> For i = 2 To Worksheets.Count
> With Worksheets(i)
> If .AutoFilter Is Nothing Then .AutoFilterMode = False '★
> lRow = .Cells(Rows.Count, 1).End(xlUp).Row
> lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
> '----シートのデータが2行以上の場合にコピーします
> If lRow >= 2 Then
> lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
> .Activate
>
> .Range("A1").AutoFilter field:=5, Criteria1:=Date1
>
> .Range(Cells(2, 1), Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1)
> .AutoFilterMode = False '★
> End If
> End With
> Next i
> Worksheets(1).Activate
> Range("A1").Select
> Application.ScreenUpdating = True
> End Sub
>
ご教授いただきありがとうございます。
ご教授いただいた内容で、作動できましたが全てのデータが出力されてしまいました,,,,
field:=5, Criteria1:=Date1
を適応させるための方法をお教えください。
よろしくお願いいたします。
[返信 11] Re : 条件付き複数シートを集計したい!
投稿者 : さんこう 投稿日時 : 2024/07/25(Thu) 15:51:42
>全てのデータが出力されてしまいました
日付の場合はややこしいです。
参考になれば。
<vba オートフィルタ 日付>
https://www.google.com/search?q=vba+%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF+%E6%97%A5%E4%BB%98
>全てのデータが出力されてしまいました
日付の場合はややこしいです。
参考になれば。
<vba オートフィルタ 日付>
https://www.google.com/search?q=vba+%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF+%E6%97%A5%E4%BB%98
[返信 12] Re : 条件付き複数シートを集計したい!
投稿者 : mow 投稿日時 : 2024/07/26(Fri) 09:44:27
■[返信 11] さんこうさん(2024-07-25 15:51:42)の記事
> >全てのデータが出力されてしまいました
>
> 日付の場合はややこしいです。
>
> 参考になれば。
>
> <vba オートフィルタ 日付>
> https://www.google.com/search?q=vba+%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF+%E6%97%A5%E4%BB%98
>
できました!ご教授いただきありがとうございました!!!
■[返信 11] さんこうさん(2024-07-25 15:51:42)の記事
> >全てのデータが出力されてしまいました
>
> 日付の場合はややこしいです。
>
> 参考になれば。
>
> <vba オートフィルタ 日付>
> https://www.google.com/search?q=vba+%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF+%E6%97%A5%E4%BB%98
>
Option Explicit Sub matome() Dim i As Long Dim lRow As Long, lCol As Long, lRow2 As Long Dim rng As Range, rng2 As Range Dim Date1 As String Dim fmt As String Date1 = InputBox(prompt:=" 検索したい日付を書いてください。(例 24/7/26) ") fmt = Worksheets(2).Range("E2").NumberFormatLocal ' 表示形式を取得 Application.ScreenUpdating = False Worksheets(1).Cells.ClearContents Worksheets(2).Range("1:1").Copy Worksheets(1).Range("A1") For i = 2 To Worksheets.Count With Worksheets(i) If .AutoFilter Is Nothing Then .AutoFilterMode = False '★ lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(1, Columns.Count).End(xlToLeft).Column Set rng = .Range(.Cells(1, 1), .Cells(lRow, lCol)) Set rng2 = .Range(.Cells(2, 1), .Cells(lRow, lCol)) If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 rng.AutoFilter field:=5, Criteria1:=Format(DateValue(Date1), fmt) If Intersect(rng, .Columns("A")).SpecialCells(xlCellTypeVisible) _ .Count >= 2 Then rng2.Copy Worksheets(1).Cells(lRow2, 1) End If .AutoFilterMode = False End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub
できました!ご教授いただきありがとうございました!!!
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-03 17:33:32 )