Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の条件は同じで2つ目の条件がSheet2のB列に20個縦に並んでいるのですが、
下記のように同じようなマクロを20個書くのではなく抽出条件2をSheet2のB列から持ってくる方法を教えてください。
Sub りんごA()
'オートフィルターで抽出
Dim Count As Long
With Worksheets("Sheet3")
'抽出条件1
Range("B4").AutoFilter 2, Array("五個入り", "10個入り", "ケース ", "1個, xlFilterValues
'抽出条件2
Range("B4").AutoFilter 6, "りんごA"
Count = WorksheetFunction.Subtotal(3, Range("B4").CurrentRegion.Columns(1))
End With
'処理月へ転記
Dim c As Long
With Worksheets("Sheet1")
For c = 3 To 14 '4月~3月の範囲
If .Cells(2, c).Value = Worksheets("Sheet1").Range("A2").Value Then
Worksheets("Sheet2").Cells(3, c) = Count - 1
Exit For
End If
Next c '該当月の指定
End With
Application.CutCopyMode = False
End Sub
Sub ばななA()
'オートフィルターで抽出
Dim Count As Long
With Worksheets("Sheet3")
'抽出条件1
Range("B4").AutoFilter 2, Array("五個入り", "10個入り", "ケース ", "1個, xlFilterValues
'抽出条件2
Range("B4").AutoFilter 6, "ばななA"
Count = WorksheetFunction.Subtotal(3, Range("B4").CurrentRegion.Columns(1))
End With
No.2ベストアンサー
- 回答日時:
Sub りんごA()を
Sub 指定品名抽出(ByVal hinmei As String)
変えます。
そして、
Range("B4").AutoFilter 6, "りんごA" を
Range("B4").AutoFilter 6, hinnmei
に変えます。
指定品名抽出を呼び出すとき、Sheet2のB3を指定します。(B3=りんごA)
結果として以下のようになります。
Sub 抽出()
'りんごA の場合
Call 指定品抽出(Worksheets("Sheet2").Cells(3, "B").Value)
End Sub
Sub 指定品名抽出(ByVal hinmei As String)
'オートフィルターで抽出
Dim Count As Long
With Worksheets("Sheet3")
'・・・途中省略・・・
'抽出条件2
Range("B4").AutoFilter 6, hinmei
'・・・途中省略・・・
End With
'・・・以降省略・・・
End Sub
ありがとうございます。
ご提示いただいたSub 抽出を実行したところ、コンパイルエラー Sub または Function が定義されていません。となってしまいました。何が足りないのかおわかりになりますでしょうか。
No.4
- 回答日時:
失礼しました。
指定品抽出 ではなく
指定品名抽出 でした。
以下のようにしてください。
Call 指定品名抽出(Worksheets("Sheet2").Cells(3, "B").Value)
ありがとうございます。()はこのように使うのですね。
とても勉強になりました。
ご教授いただいたコードでfor nextを試したいので再度質問させて下さい。
No.1
- 回答日時:
直接の回答ではないですが。
------
For c = 3 To 14 '4月~3月の範囲
If .Cells(2, c).Value = Worksheets("Sheet1").Range("A2").Value Then
Worksheets("Sheet2").Cells(3, c) = Count - 1
Exit For
End If
Next c '該当月の指定
------
の部分って『月』で列番号を得たいのですよね?
そしてセルの値はシリアル値?
その場合にはループさせ比較する必要はないと思いますよ。
MONTH 関数
https://support.microsoft.com/ja-jp/office/month …
で何月なのかを調べ -1 すれば列番号です。
ただし1~3月については先に+12して13~15としてから-1になりますかね。
20年位にVBA覚えたての際の回答者様たちは、このようなやり方多かったです。
参考になれば幸いです。
ちなみに今回の質問であればループ処理になるでしょうけど、SubtotalよりはCountIfsの方が先の質問も含め良いようにも感じました。
が、検証できない初級者なのでベテラン回答者様にお任せです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Sheet1の出荷日と品名が並んだ表からSheet2の品名別出荷日別の個数一覧表を作っています。 オ 3 2022/12/01 23:54
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
swift初心者です。swiftでの質...
-
リストポックスへの抽出方法
-
差し込み後、元データを変更し...
-
誰か教えてください
-
前置可能な語句を含む複数の修...
-
速度が低下し無効になったアド...
-
for whichの使い方
-
1、Rstudioで回帰直線を求める...
-
no appleとno applesの違いは?
-
英語で「もう2~3日待ってくだ...
-
there is no way to do/of doin...
-
chatgptでつくってもらったコー...
-
Gitのクローンについて
-
特定の文字列で列を区切るには?
-
Excelの空文字判定について
-
Yahoo .comの idには年齢制限、...
-
商品番号を入力すると、商品名...
-
エクセルのxans.について
-
パイソンプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
バッチでcsvファイルの指定のカ...
-
COBOLについて
-
リストビューの項目の内容を変...
-
DataViewで複数条件の...
-
php mysql で WHERE句内に変数...
-
Zend_DBを使ったselectで文字が...
-
fgetcsvでCSVを取得した際のnul...
-
ListViewのカラムの色の変更
-
google formsを使ったタスク依...
-
COBOL プログラミング
-
DataGridView 右詰め
-
初心者)DataGridViewの入力桁...
-
Pythonについて
-
前回ご教授いただいたコードに...
-
FormulaR1C1でSUMIF変数指定
-
C# リストビューの値を取得
-
このvbaで指定したフォルダから...
-
VB6リストボックスでの文字...
-
Chromeのデベロッパーツール プ...
おすすめ情報