戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
マクロでオートフィルターをする

    [189602] マクロでオートフィルターをする-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/06/18(13:23))
    □U R L/

      よろしくお願いします。

      マクロで、セルAに数値が入力されたら、直下にある一覧表に
      オートフィルターをかける検索機能を付けたいと考えています。

      現在、オートフィルターを実行するまでは出来ているのですが、
      セルAに入力した数値が一覧表の数値と完全に一致していない場合は
      メソッドが失敗しました。とエラーになります。

      一致していない場合は、ありません。とMsgboxを表示させるには
      どうすれば良いでしょうか?

      また、ベストな形は数値を一文字入力する度にオートフィルターを変更する事ですが、
      可能でしょうか?

      説明が下手で申し訳ありませんが、よろしくお願いします。




    [189606] Re[1]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ 阿倍野介 -(2019/06/18(15:56))
    □U R L/

      > 現在、オートフィルターを実行するまでは出来ている

      まずは、それをここに記載してください。




    [189607] Re[2]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ リスキーダック -(2019/06/18(16:43))
    □U R L/

      >一致していない場合

      先にmacth関数などで、有無を調べてからにすればいい。
      私はそうしているけど。

      >ベストな形は数値を一文字入力する度にオートフィルターを変更する事ですが、
      可能でしょうか?

      セル入力ということなら、無理。
      まず、半角英数字を1文字入力でチェンジイベントが発生するか、自分で確認する。
      で、無理なものは無理と自分で判断。




    [189611] Re[3]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/06/21(10:49))
    □U R L/
      足りないことが多く申し訳ありません。
      以下コードです。
      
      Sub 検索()
       
       Range("B7").AutoFilter
       
       If Range("K3").Value = Range("k4") Then
       ActiveSheet.Range("B7").AutoFilter Field:=2, Criteria1:=Range("K3"), Operator:=xlOr, Criteria2:=Range("K5")
       
       Else
       
       ActiveSheet.Range("B7").AutoFilter Field:=2, Criteria1:=Range("K3"), Operator:=xlOr, Criteria2:=Range("K4")
        
       End If
       
      End Sub
      
      少し分かりにくいかもしれませんが、セルAに入力された数値を元に、
      (K3:K5)に別の数字を表示させ、それを検索値として検索している状態です。
      
      一致したものが無い場合は、MsgBoxで "見つかりません"と表示させようと考えております。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189632] Re[4]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ マナ -(2019/06/22(22:14))
    □U R L/

      一致したものが無い場合の。K3、K4、K5の値はどうなるのでしょうか。




    [189633] Re[5]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2019/06/23(06:10))
    □U R L/
      横入り失礼します。
      
      >また、ベストな形は数値を一文字入力する度にオートフィルターを変更する事ですが、
      >可能でしょうか?
      AxtiveXコントロール(例えばテキストボックス)のchangeイベントを使用すれば
      可能でしょう。
      
      オートフィルターよりもフィルタオプションのほうが簡単かもしれない。
      
      いずれにしても、その前段階として、
      >セルAに入力された数値を元に、
      >(K3:K5)に別の数字を表示させ
      とあるが、
      A1セルとK3,K4,K5のセルの関係が他人にはわからない。
      3つに分ける意図も不明です。
      
      そのあたりを説明しないことには、回答者の頭にある霧は晴れないし、
      適切な助言はできない。
      




    [189649] Re[6]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ リスキーダック -(2019/06/24(19:39))
    □U R L/
      Dim no1 As Long, no2 As Long, no3 As Long
      On Error Resume Next
      no1 = Application.Match(Range("K3").Value, Columns(2), 0)
      no2 = Application.Match(Range("K4").Value, Columns(2), 0)
      no3 = Application.Match(Range("K5").Value, Columns(2), 0)
      If no1 + no2 = 0 Then
         K3 , K4どちらもない
      End If
      
      とか・・・・。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189657] Re[7]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ apple -(2019/06/24(22:50))
    □U R L/
      >メソッドが失敗しました。とエラーになります。
      >一致していない場合は、ありません。とMsgboxを表示させるには
      エラーの出ないコードに修正した上で、抽出結果から「ありません」とすればいいのでは?
      
      Sub Test()
          Dim rng As Range
          
          With Range("B7").CurrentRegion
              If Range("K3").Value = Range("K4").Value Then
                  ' 元レスでは、この場合、K3、K5 を検索だが、K4、K5 検索と同義の筈
                  Set rng = Range("K4:K5")
              Else
                  Set rng = Range("K3:K4")
              End If
              .AutoFilter Field:=2, Criteria1:=rng.Cells(1).Value, _
                      Operator:=xlOr, Criteria2:=rng.Cells(2).Value
              If .Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then
                  MsgBox Join(WorksheetFunction.Transpose(rng), " OR ") & " は見つかりません"
              Else
                  'MsgBox Join(WorksheetFunction.Transpose(rng), " OR ") & " を検索しました"
              End If
          End With
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189729] Re[8]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/06/30(17:54))
    □U R L/

      返信が遅くなってしまい申し訳ありません。

      一覧表は以下のようになっています。

      番号  シリアルコード  情報A 情報B 情報C...
      1     C-45
      2     C-32
      3     C-67
      4     C-45
      5     C-32

      シリアルコードが実際にはもう少し複雑な為、
      セルAに番号を入力し、INDEXとMATCH関数を利用して
      (K3:K5)に番号に適合するシリアルコードを表示させ、
      それを元にオートフィルターを行っています。
      ("K3:k5")となっているのは、シリアルコードは違うが番号が同じものがある為です。
      またその逆もあり、番号は違うがシリアルコードが同じものもある為、
      シリアルコードでのオートフィルターを行っています。

      様々な情報源から引っ張ってきたものを元にアレンジしたので、
      おかしなやり方をしているかも分かりません。混乱させてしまい申し訳ありません。


      私のイメージではコードを実行した際に、("K3:k5")に表示させたシリアルコードと
      同じものが無いと、メソッドが失敗しました。となると思っていますので、
      その表示をmsgboxに変更できないかと考えていました。

      何度も申し訳ありませんが、よろしくお願いします。




    [189730] Re[9]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/06/30(17:56))
    □U R L/

      > 返信が遅くなってしまい申し訳ありません。
      >
      > 一覧表は以下のようになっています。
      >
      > 番号  シリアルコード  情報A 情報B 情報C...
      > 1     C-45
      > 2     C-32
      > 3     C-67
      > 3     C-22
      > 4     C-45
      >
      > シリアルコードが実際にはもう少し複雑な為、
      > セルAに番号を入力し、INDEXとMATCH関数を利用して
      > (K3:K5)に番号に適合するシリアルコードを表示させ、
      > それを元にオートフィルターを行っています。
      > ("K3:k5")となっているのは、シリアルコードは違うが番号が同じものがある為です。
      > またその逆もあり、番号は違うがシリアルコードが同じものもある為、
      > シリアルコードでのオートフィルターを行っています。
      >
      > 様々な情報源から引っ張ってきたものを元にアレンジしたので、
      > おかしなやり方をしているかも分かりません。混乱させてしまい申し訳ありません。
      >
      >
      > 私のイメージではコードを実行した際に、("K3:k5")に表示させたシリアルコードと
      > 同じものが無いと、メソッドが失敗しました。となると思っていますので、
      > その表示をmsgboxに変更できないかと考えていました。
      >
      > 何度も申し訳ありませんが、よろしくお願いします。




    [189731] Re[10]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/06/30(17:59))
    □U R L/

      連投申し訳ありません

      上側の一覧表部分が間違っておりましたので、修正いたしました。

      下側の一覧表が正しいものです。




    [189733] Re[11]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ リスキーダック -(2019/06/30(21:59))
    □U R L/

      エラートラップって知ってますか?

      on error resume next
      とか。

      先にあるか無いかを調べれば良い事だけど・・・。

      >INDEXとMATCH

      この辺でひっかかっているの名ね?

      Application.MATCH
      で検索すれば、色々で来ると思います。

      っていうか、[189649] これ見てないよね。




    [189734] Re[12]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ リスキーダック -(2019/06/30(22:01))
    □U R L/

      書き忘れた。
      修正を人に読ませたかったら、修正した所はせめて左の > を取れば・・・。




    [189735] Re[13]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2019/06/30(22:33))
    □U R L/
      基本的なところでよくわかりません。
      1)特定セルにある「番号」をもとに、
       これに対応した「シリアルコード」を取得し、
      2)その「シリアルコード」に合致するデータを
        オートフィルタで抽出したい
      ということですか?
      
      で、確認したい点は、
      K3:K5の3種類の異なるシリアルコードが必要になることはないんですか?
      ということです。
      なぜか2つまでの抽出しか扱っていないようですけど。
      
      




    [189763] Re[14]: マクロでオートフィルターをする-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ shi -(2019/07/05(13:55))
    □U R L/

      リスキーダック様
      申し訳ありません。一つ一つの回答の内容を試していたところ時間がかかってしまいました。
      エラートラップについては知りませんでした。
      今回の件についてはこれで解決できそうです。

      みなさま本当にありがとうございました。




    [189774] Re[15]: マクロでオートフィルターをする-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2019/07/06(09:29))
    □U R L/
      >また、ベストな形は数値を一文字入力する度にオートフィルターを変更する事ですが、
      とのことだったので、その方向でコード作成してありました。
      当方の質問は無視されたようで残念です。
      折角ですので提示して、閲覧に供します。
      
      <<シートレイアウト>>
        A列   B               C     D     E          J     K 
      1 番号  シリアルコード  情報A 情報B 情報C      番号  シリアルコード
      2 1     C-45
      3 2     C-32
      4 3     C-67
      5 3     C-45
      6 5     C-32
      
      【方針】
      1. フィルタオプションを使用します。
      2.一文字ずつ感応させるために、テキストボックスのChangeイベントプロシージャを使用。
      
      【参考コード】
      ■シートモジュール
      Private Sub TextBox1_Change()
          Range("J2").Value = TextBox1.Value
          Call data抽出
      End Sub
      
      ■標準モジュール
      Sub data抽出()
          Dim myRange As Range
          Set myRange = Range("A1").CurrentRegion
      
          If Range("J2").Value = "" Then
              Call dataReset
              Exit Sub
          End If
          '番号を元にシリアルコードを抽出
          myRange.AdvancedFilter _
                  Action:=xlFilterCopy, _
                  CriteriaRange:=Range("J1:J2"), _
                  CopyToRange:=Range("K1"), _
                  Unique:=True
          
          If Range("K2") <> "" Then
              'シリアルコードを元にデータを抽出
              myRange.AdvancedFilter _
                      Action:=xlFilterInPlace, _
                      CriteriaRange:=Range("K1", Range("K1").End(xlDown)), _
                      Unique:=False
          Else
              Call dataReset
          End If
      End Sub
      Function dataReset()
              If ActiveSheet.FilterMode = True Then
                  ActiveSheet.ShowAllData
              End If
              Range("k2", Cells(Rows.Count, "K").End(xlUp).Offset(1)).ClearContents
      End Function
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G