• ベストアンサー
  • すぐに回答を!

オートフィルタ後の、マクロでの値の参照に関して

オートフィルタ後の、マクロでの値の参照に関して 下記を悩んでいます。教えて頂ければ幸いです。 マクロで、あるデーター表から、オートフィルタを使用し、必要なデーターを 抽出し、マクロ内に戻し、その後の計算で使用したいと考えています。 A列、B列、C列にそれぞれ、検索条件を指定し、オートフィルタ後、下記のような状態になります。 参照したい値は、D列になります。 下記のような例では、2.5と2.7の値をマクロ内に戻したいです。 (例:オートフィルタ後) 1行  A▼  B▼  C▼  D 16行 **  **   **  2.5   20行 **  **   **  2.7 *2~15行目は見えなくなっています。 *17~19行目は見えなくなっています。 セルを参照し、マクロ内に戻すには、どのような構文(マクロ)の記述が必要でしょうか? 【備考】 ・上記の例では、セルはD16、D20となりますが、抽出条件によっては、行番号が変わってしまいます。 ・抽出後のD列のデーター数は、常に2つです。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数268
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • Wendy02
  • ベストアンサー率57% (3570/6232)

>下記のような例では、2.5と2.7の値をマクロ内に戻したいです。 マクロ内に戻したいという意味が分かりにくいです。「マクロ」というのを、コードに戻すとしても、意味が通りませんので、単なる抽出に留めます。 '// Sub TestMacro1()  Dim rng As Range  Dim c As Range, i As Long  Dim Ar(1) As Double  With ActiveSheet   If .AutoFilterMode Then    Set rng = .AutoFilter.Range    'タイトル行を含めない場合は、On Error Resume Next が必要    With rng.Columns("D").SpecialCells(xlCellTypeVisible)     For Each c In .Cells      If IsNumeric(c) Then       Ar(i) = c.Value       i = i + 1       If i > 1 Then Exit For      End If     Next c    End With   End If  End With  MsgBox Ar(0) & "," & Ar(1) End Sub

共感・感謝の気持ちを伝えよう!

その他の回答 (1)

  • 回答No.1
  • keithin
  • ベストアンサー率66% (5278/7939)

>抽出後のD列のデーター数は、常に2つです。 sub macro1()  dim h as range  dim c as long  dim ans(1 to 2)  if not activesheet.filtermode then exit sub  for each h in range("D2:D" & range("D65536").end(xlup).row).specialcells(xlcelltypevisible)   c = c + 1   msgbox h.value   if c < 3 then    ans(c) = h.value   end if  next end sub >マクロに戻したい 「何をしたい(どういう結果を得たい,あるいは「戻し」たあと具体的にどう使いたい)」のか,少々イミフメイです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。参考にさせて頂き、やりたかった事ができるようになりました。

関連するQ&A

  • オートフィルターで抽出されたデータの参照方法について

    1000件以上のデータをA,B、C列にオートフィルターをかけて抽出されたデータのA,B、C列およびD列目の値を参照する式を組みたいのですが、当然のことながらオートフィルターをかける都度、表示されるセル番地が変わるので式がくめません。 多分、マクロでコピーしてどこかにペーストすればいいのでしょうが、まったくわかりません。お教えください。

  • ExcelVBA:オートフィルタをかけたシート上でのセル内の値参照について

    オートフィルタをかけた状態で、セル内の値を参照しても、オートフィルタがかかってないセル(隠れているセル)の値を参照してしまいます。 例えば、ある条件でオートフィルタをかけて、行が1,2、6,7、8・・・となって、3,4,5行が非表示になっているのにもかかわらず、 Range("A1").Offset(0, 2).Value を参照すると、6行目の値ではなくて、非表示の3行目の値を拾ってきてしまいます。 このように、オートフィルタをかけたシート上で値を参照する際に、非表示行を無視して行数取りし、値を参照したいのですが、何か方法はありますでしょうか? 上の例ですと、6行目のセルを3行目として扱いたいわけです。 どなたか、ご教授くださいませ。 よろしくお願い致します。

  • マクロでオートフィルターの抽出が出来ない

    下記のデーターをマクロで作成しましたが、2010/03/01は抽出するが、2010/03/02以降は デバッグが発生して上手くいきません。 どの様にすれば解決できるのか、ご教授お願いします。 現状) AファイルのA列のオートフィルタオプションで、抽出条件の指定にBファイルの C6をコピーして、「Ctrl」+「V」で貼り付け抽出すると2010/03/01の24時間分の データーが抽出されます。2010/03/02を抽出するとデバッグが発生する。 データーの詳細) Aファイルに「元データー Sheet」があり、A6~A44647に、 1ヶ月分の日付が記載されてます。 (B6~B44647には、24時間を1分間隔でのデーターがあります) A列の日付は、2010/03/01~2010/03/31のデーターがあり、 「セルの書式設定」を確認すると、「標準」設定で表記されてます。 オートフィルタによりA列の、各1日分のデーターを抽出させます。 Bファイルの「作成日指定 Sheet」のB3に2010/3/1を入力すると C6には「=$B$3」で「2010/03/01」と表示する様に「セルの書式設定」 「ユーザー定義」で「yyyy/mm/dd」を選択してます。(C36まで設定) 以下C7に「=$B$3+1」で、C8には「=$B$3+2」で、C36までで「2010/03/31」 と表示させてます。

  • エクセル-マクロ-オートフィルタ

    エクセルのマクロで、 オートフィルタでデータを抽出する場合、 引数Criterial,Criterial2で文字列を指定しますが、 Criterial3…とできません。 ・3個以上抽出したい場合 ・「*~」以外を抽出したい場合 がわかりません。 教えて下さいmm。

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • オートフィルタ使用時のマクロによるセルの移動

    オートフィルタによって抽出した結果、表示されている行の内容を順々に参照していきたいのですが、 どうすればよいのでしょうか? 簡単なことのような気がするのですが・・・。 ActiveCell.Offset(1, 0).Select とすると、フィルタによって非表示になっている行にも移動してしまいます。 フィルタによって抽出する項目は複数の列を使用するので、マクロでは抽出条件を設定しません。 以上、お願いしまーす。

  • Excel オートフィルタのトップテンオートフィルタについておたずねします。

    Excelのオートフィルタを使用し、抽出を行います。その結果を対象に[トップテンオートフィルタ]を実行すると、先の抽出結果にではなく、データベース全体を対象にした結果が返されます。 ヘルプには、「1 つの列にフィルタを使用した場合、他の列のフィルタは、最初に抽出されたセル範囲内の表示されたセル (可視セル) の値に対してのみ適用できます。」とあります。 先の抽出結果を他の場所へ貼り付けるなどしてから、[トップテンオートフィルタ] を実行すれば、結果は得られますが、理由がわからないので、すっきりしません。 WindowsXP・Excel2002&2003で検証済みです。 よろしくお願いします!

  • マクロ オートフィルタ機能について教えてください。

    Office2000の環境で、オートフィルタを使って抽出したデータをそのまま隣の列へコピー?(セル右下にあわせて十を出して左クリック+左方向へ一列分移動)を行いたいのですが、マクロを実行するとサポートしていませんと表示されます。エクセル200ではダメなのでしょうか? 又は、エクセル2000でも出来るものがありましたら誰か教えてください。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • オートフィルターの使い方

    マクロでオートフィルタを使おうと思っているのです。 作成したリストの中で、日付でフィルタしようと思い 下記を作成してみましたがうまくいきません。 Worksheets("シート名").Range("A2").AutoFilter Field:=30, Criteria1:="<=2004/9/30", Operator:=xlAnd = 1, Criterial2:=">=2004/9/1" 条件と致しましては任意の期間(例:2004/9/1~2004/9/30)を抽出条件としたいのですが・・・ 又、セルには空白も存在します。 宜しくお願いいたします。