• 締切済み

Excelのマクロについて

sheetのB列からInputboxで入力した値を含むセルを1~複数個選択してフィルターする場合、どのようにすれば良いのでしょうか 一応自力で考えてみた結果、こんな感じになったのですが、上手くいきませんでした Range(B11).Select Myc=Inputbox(番号を半角数字で入力) Range("B11:B100").AutoFilter Field:=2, Criteria:=Myc 初心者なので、かなり雑な上に間違いだらけかもしれませんが、そこは勘弁して下さい よろしくお願いします

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.6

>Excel2013を使っているので、 当方のOffice2013の環境で確認してみました。 正しく動作します。 私の提示した内容と同じデータ、同じマクロで 期待の動作になるかどうか、 もう一度しっかり確認してみてください。 数値が実は全角といったオチはないんですよね?

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.5

>また、Criteria1:="=*" & Myc & "*"の部分でMyc & "*"が入力不可でした。 どのような症状なのかが読み取れません。 もう少し具体的に、どのように不可なのかを説明してほしいです。 >*←これに関してはアスタリスクだと判断しているのですが、違ったら教えて下さい はい、半角のアスタリスクです。 私の画面やソースを画像で添付しましたので 確認してみてください。

Sinsotu
質問者

補足

Myc & "*"に関しては間にスペースが入っていなかっただけでした 画像の添付ありがとうございます その通りにしてみましたが、どの数値を入力しても該当無しで空白が返されました おそらく、バージョンの違いなのかもしれません Excel2013を使っているので、可能であればそちらも考えていただけるとありがたいです

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.4

セルに埋まった値たちが、2桁の数値、半角スペース、3桁の数値という形式であれば、 先に私の示したコードで期待の動作になりませんでしょうか? もし期待と違うようであれば、 どのように期待外れかを教えてください。

Sinsotu
質問者

補足

結論から言うと、期待通りにはなりませんでした 具体的には、100を入力した時に、返ってくるのが03 001のみだったからです。他の数値を入力しても同じでした。 また、Criteria1:="=*" & Myc & "*"の部分でMyc & "*"が入力不可でした。 *←これに関してはアスタリスクだと判断しているのですが、違ったら教えて下さい

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.3

>Inputboxで入力した値を含むセル これは、"23"と入力したら 23 の埋まったセルに加え、 123 や 234 や 1234 もフィルターにヒットさせるということでしょうか? フィルターには、数値フィルターとテキストフィルターがあり、 B12以下が数値の羅列の場合、数値フィルターが強制され 「入力した値を含むセル」というフィルターを行うことができません。 添付画像のように、数値の羅列ではあるものの セル上では文字列な扱いになっているのであれば 後記のコードで期待のことができます。 数値の羅列で、かつ、数値タイプのまま 「入力した値を含むセル」という条件で絞り込みを行うのであれば おそらく、 単なるフィルターを呼び出す制御では実現できないと思います。 これを実現するコードを期待していますか? Option Explicit Sub sample()  Dim Myc As String     ActiveSheet.AutoFilterMode = False  Range("B11").Select  Myc = InputBox("番号を半角数字で入力")  Range("B11:B100").AutoFilter Field:=1, Criteria1:="=*" & Myc & "*" End Sub

Sinsotu
質問者

補足

回答ありがとうございます フィルターしたいもののデータ的には ''03 001'',''03 002''… となっているもので、このうちの001だけを入力して03 001が返ってくるようなマクロを作りたいのです ものによっては同一番号が複数ある場合もあります(例えば03 078が2つ等) なので、これらを含めた上で出来るかどうかを知りたいです

  • SI299792
  • ベストアンサー率48% (715/1481)
回答No.2

場所は、B11:B100固定でいいのですか。 Option Explicit ' Sub Macro1()   Dim Myc As String '   Myc = InputBox("番号を半角数字で入力", "オートフィルター")   ActiveSheet.AutoFilterMode = False   [B11:B100].AutoFilter 1, Myc End Sub 間違い ①InputBoxの引数に""がありません。 ②B列しか指定していないのに Field:=2 にしている。ここは、オートフィルターの範囲内の相対値を指定します。だから1列しか指定しないのなら、1しか指定できません。2にしたければ、    [A1:B100].AutoFilter 2, Myc にします。

回答No.1

Criteria→Criteria1では? マクロの自動記録でできたのをまねしたりするといいですよ。

関連するQ&A

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • EXcelオートフィルタのオプション設定で条件として変数をマクロで組むには?

     オートフィルタ機能を使い、指定期間内のデータを抽出するようにマクロを組みたい。指定期間が一定ではないので変数を設定したいのですがうまくいきません。下記はマニュアルで入力したものをマクロに記録したものです。指定期間は他のBookのセルに入力画面として設けてあります。例えばBook2/B1(開始)~B2(終了)。 Range("A1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:=">=2005/8/21", Operator:=xlAnd _ , Criteria2:="<=2005/9/20" Range("C1").Select End Sub

  • エクセルマクロで教えてください

    エクセル20003です。 Range("T1").Select Selection.AutoFilter Field:=20, Criteria1:=">3", ator:=xlAnd Rows("36:36").Select Range(Selection, Selection.End(xlDown)).Select 上記のような記述があります。 オートフィルターを掛けて値が"3"以上のデーターに絞り込んで作業するのですが、【 Rows("36:36").Select 】のところで今回は36なんですが可変にしたいのです。 どのような記述に変えれば良いのでしょうか。(行単位で作業します) よろしくお願いします。

  • エクセルのマクロ

    現在エクセルにてデーターの分析などをおこなっています。 そこで1つ質問ですがオートフィルターをした後のベスト10のデーターをコピーできないでしょうか? Sheets("シート名").Select Range("J5").Select Selection.AutoFilter Field:=10, Criteria1:=">=500", Operator:=xlAnd Range("A5:R2384").Sort Key1:=Range("Q5"), Order1:=xlDescending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal ActiveWindow.SmallScroll ToRight:=-4 Range("B5:R15").Select Application.CutCopyMode = False Selection.Copy Sheets("データーシート3").Select Range("B5").Select ActiveSheet.Paste この様にやっているのですが Criteria1:=">=500"の部分が変動する為に、表示されるデーター数がバラバラです。 たえずどんな条件でオートフィルターをかけても10件コピーできる方法はないでしょうか?

  • EXCELマクロでワイルドカードを使ったオートフィルタ処理の方法がわからない

    エクセルのマクロがうまく動かないので、教えてください。 あるセルにカーソルをおいて、そのセルの文字を含んだ文字で(ワイルドカードを使って)オートフィルタ処理をしたいのですが、 「構文エラー」となってしまいます。 Dim num As String num = ActiveCell.Value Sheets("リスト").Select Columns("AN:AN").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="=*"&num&"*", Operator:=xlAnd ActiveWindow.ScrollColumn = 2 Range("A1").Select Criteria1:="=*"&num&"*"の部分で 「構文エラー」になっているようなのですが… お分かりになる方教えてください。よろしくお願いします。

  • Excel AutoFilterメソッドについて

    excelのvbaについてです。  日付   取引先   金額 ------------------------------ 3月20日  ○○様  ¥20,000 4月23日  △△様  ¥19,000 5月23日  ○○様  ¥5,000 ・・・・・ ・・・ ・・ というような表から、INPUTBOXで入力した抽出条件でデータを取り出したいと思っています。 Dim aa As String, i As Integer aa = InputBox("抽出する取引先を入力してください") i = InputBox("抽出を開始する月は?※半角数字で入力してください") ii = InputBox("抽出を終了する月は?※半角数字で入力してください") Selection.AutoFilter field:=1, Criteria1:=aa Selection.AutoFilter field:=2, Criteria1:=">=" & i & "月1日", Operator:=xlAnd, Criteria2:="<=" & ii & "月31日" End Sub としたのですが、月によって30日で終わる月もあれば、28日、29日で終わる月もありますよね。 どんな月の範囲指定をしても、ちゃんと抽出できるようにするにはどうしたらいいでしょうか? 諸先輩方、どうぞよろしくお願いします。

  • エクセルVBA住所録で半角全角問わず検索する方法

    エクセルVBAで住所録を作っています。 住所録で下記のようなコードを書いて、キーワード検索をさせるようにしているのですが、『*丁目』や番地に半角英数を使っています。 全角で数字を入力しても検索されるようなコードの書き方はあるのでしょうか? 宜しくお願いします。 Sub 住所検索() ans = InputBox("住所を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:IV1").AutoFilter 'オートフィルタモードをセット .Range("A1:IV1").AutoFilter Field:=4, Criteria1:="=*" & ans & "*" '4つ目のフィルターに検索文字 End With End Sub

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • エクセルのマクロ

    勉強を始めたばかりで処理を繰り返す項目をいろいろ調べたのですがうまくいきません。教えてください。 オートフィルタで3列目を”東京 ”という文字でを抽出したあとである処理をし、その後同じ列で今度は”神奈川 ”を選び同様の処理をする。また今度は 次は"千葉”と繰り返したいのです。 マクロを見てみると Selection.AutoFilter Field:=3, Criteria1:="1"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="2"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="3"    何らかの処理 となっています。こうなると必要な数だけ これをコピーしないといけないので ループのようなもので下記の■の部分の 数字を1.2.3.~と処理を繰り返す毎に 増やして生きたいのです。 そしてリストの最後にきたらおしまいにしたいのですが・・・・。FOR NEXT とか DO LOOP とか 試しましたが、私の幼稚な知識ではうまく動いてくれませんでした。すみませんがよろしくお願いします。 Selection.AutoFilter Field:=3, Criteria1:="■" 処理

  • ダブルクリックでエクセル起動

    セルをダブルクリックしてマクロを起動させたいのですが。 B1セルをダブルクリックすると、 Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub を実行させるようにしたいのです。 その方法で、C1、D1、E1、・・・も同様にしたいと思っています。 どなたか教えてください。

専門家に質問してみよう