• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オートフィルタ後の、マクロでの値の参照に関して)

マクロでオートフィルタ後の値の参照に関する悩み

このQ&Aのポイント
  • マクロ内でオートフィルタを使用してデータ表から必要な値を抽出したいです。特定の列に検索条件を指定し、オートフィルタを実行すると、抽出した値をマクロ内で参照することができます。
  • 例えば、A列、B列、C列に検索条件を指定し、オートフィルタを実行すると、抽出した値はD列に表示されます。抽出した値をマクロ内に戻すには、D列のセルを参照すれば良く、適切な構文で記述すれば実現できます。
  • ただし、D列のセルの位置は抽出条件によって変わる可能性があります。そのため、セルの位置を動的に参照するようなマクロの記述が必要になります。また、抽出後のD列のデータ数は常に2つとなるため、この点も考慮してください。

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

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

>下記のような例では、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)

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

>抽出後の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 >マクロに戻したい 「何をしたい(どういう結果を得たい,あるいは「戻し」たあと具体的にどう使いたい)」のか,少々イミフメイです。

atsukaki
質問者

お礼

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

関連するQ&A