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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
リストビューの項目の内容を変...
-
php mysql で WHERE句内に変数...
-
C# リストビューの値を取得
-
COBOLについて
-
初心者)DataGridViewの入力桁...
-
バッチでcsvファイルの指定のカ...
-
DataViewで複数条件の...
-
テキスト幅にあわせた表の作り...
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
フィルターかけた後、重複を除...
-
外部参照してるキーを主キーに...
-
EXISTSを使ったDELETE文
-
スペースを検索したい
-
JavaScriptの定数名が取り消し...
-
カーソル0件の時にエラーを発生...
-
SQLServerで文字列の末尾からあ...
-
select文のwhere句に配列を入れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
php mysql で WHERE句内に変数...
-
リストビューの項目の内容を変...
-
バッチでcsvファイルの指定のカ...
-
fgetcsvでCSVを取得した際のnul...
-
COBOLについて
-
【VBA】特定の文字列を含む場合...
-
DataGridView 右詰め
-
DataViewで複数条件の...
-
ListViewのカラムの色の変更
-
初心者)DataGridViewの入力桁...
-
FormulaR1C1でSUMIF変数指定
-
テキスト幅にあわせた表の作り...
-
Zend_DBを使ったselectで文字が...
-
jQueryで、カラム幅を変更でき...
-
C# リストビューの値を取得
-
google formsを使ったタスク依...
-
COBOL プログラミング
-
VB6リストボックスでの文字...
-
ListView
おすすめ情報