Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1992 / 13645 ツリー ←次へ | 前へ→

【70621】オートフィルター2007から2003へ 亜矢 11/12/7(水) 18:51 質問[未読]
【70622】Re:オートフィルター2007から2003へ kanabun 11/12/7(水) 20:11 発言[未読]
【70623】Re:オートフィルター2007から2003へ 亜矢 11/12/7(水) 21:14 質問[未読]
【70624】Re:オートフィルター2007から2003へ kanabun 11/12/7(水) 21:59 発言[未読]
【70625】Re:オートフィルター2007から2003へ kanabun 11/12/8(木) 0:04 発言[未読]
【70626】Re:オートフィルター2007から2003へ 亜矢 11/12/8(木) 5:20 お礼[未読]

【70621】オートフィルター2007から2003へ
質問  亜矢  - 11/12/7(水) 18:51 -

引用なし
パスワード
   お世話になります。
Range("A1").AutoFilter Field:=9, Criteria1:=Array("ER431", "NC431", "NC442", "NC531"), Operator:=xlFilterValues
 上記はエクセル2007でオートフィルターを掛けているものです。
 これは特に問題はありませんが、一部の人がエクセル2003を使用していて、
 今のところ2007に変更する予定はありません。
 エクセル2003で上記を行うと問題が発生しました。
 上記のものを2003用に対応するにはどのようにしたらよいか
 教えていただきたいと思います。

【70622】Re:オートフィルター2007から200...
発言  kanabun  - 11/12/7(水) 20:11 -

引用なし
パスワード
   ▼亜矢 さん:こんにちは〜

>Range("A1").AutoFilter Field:=9, Criteria1:=Array("ER431", "NC431", "NC442", "NC531"), Operator:=xlFilterValues

これは 第9列の値が "ER431", "NC431", "NC442", "NC531" のどれかであるものを
抽出する、ということでしょうか?
そしたら、同じフィルタでも「フィルタオプションの設定」(AdvancedFilter)を
使ったらどうでしょう?
どこか空いている列に

 I列の列見出し
 ER431
 NC431
 NC442
 NC531

のように書いておいて、この範囲を「抽出条件範囲」として指定してやります。

【70623】Re:オートフィルター2007から200...
質問  亜矢  - 11/12/7(水) 21:14 -

引用なし
パスワード
   ▼kanabun さん:
>▼亜矢 さん:こんにちは〜
>
>>Range("A1").AutoFilter Field:=9, Criteria1:=Array("ER431", "NC431", "NC442", "NC531"), Operator:=xlFilterValues
>
>これは 第9列の値が "ER431", "NC431", "NC442", "NC531" のどれかであるものを
>抽出する、ということでしょうか?
>そしたら、同じフィルタでも「フィルタオプションの設定」(AdvancedFilter)を
>使ったらどうでしょう?
>どこか空いている列に
>
> I列の列見出し
> ER431
> NC431
> NC442
> NC531
>
>のように書いておいて、この範囲を「抽出条件範囲」として指定してやります。
autofilterばかり使っており、AdvancedFilterは使ったことはありません。
データはA列からJ列まであり、その中でI列のデータを抽出しています。
上記の列見出しで行うと ER431、NC431,NC442,NC531も抽出できましたが、
 このほかにER431PとかNC431Pも同時に抽出されてしまいました。
 列見出しの作り方に問題があるのでしょうか。ご指導お願いします。

【70624】Re:オートフィルター2007から200...
発言  kanabun  - 11/12/7(水) 21:59 -

引用なし
パスワード
   ▼亜矢 さん:
> 上記の列見出しで行うと ER431、NC431,NC442,NC531も抽出できましたが、
> このほかにER431PとかNC431Pも同時に抽出されてしまいました。
> 列見出しの作り方に問題があるのでしょうか。ご指導お願いします。

ああ、そうでした。ER431 だけですと、Excel2002を除いて「ER431を含む」
という条件になってしまうんでしたね。

↓「完全一致」で検索してください。
 ="=ER431"

↑だと面倒なので、代わりに
 '=ER431

でも(たぶん)よかったと思いますけど。

【70625】Re:オートフィルター2007から200...
発言  kanabun  - 11/12/8(木) 0:04 -

引用なし
パスワード
   AA列に抽出条件を書き込むとすると、こんな感じで。

Sub Try1()
  Dim v
  Dim cR As Range
  
  v = Array("ER431", "NC431", "NC442", "NC531")
  With [AA2].Resize(UBound(v) + 1)
    .Value = Application.Transpose(v)
    .Value = Application.Replace(.Cells, 1, 0, "'=")
  End With
  [AA1].Formula = "=I1"
  Set cR = [AA1].CurrentRegion
  
  With Range("A1").CurrentRegion
    .AdvancedFilter xlFilterInPlace, cR '抽出
    If .Columns(1).SpecialCells(xlVisible).Count > 1 Then
      MsgBox "抽出されたデータです"
    Else
      MsgBox "抽出なし"
    End If

    .Worksheet.ShowAllData 'すべて表示
  End With
  Columns("AA").Clear
End Sub

【70626】Re:オートフィルター2007から200...
お礼  亜矢  - 11/12/8(木) 5:20 -

引用なし
パスワード
   ▼kanabun さん:
>▼亜矢 さん:
>> 上記の列見出しで行うと ER431、NC431,NC442,NC531も抽出できましたが、
>> このほかにER431PとかNC431Pも同時に抽出されてしまいました。
>> 列見出しの作り方に問題があるのでしょうか。ご指導お願いします。
>
>ああ、そうでした。ER431 だけですと、Excel2002を除いて「ER431を含む」
>という条件になってしまうんでしたね。
>
>↓「完全一致」で検索してください。
> ="=ER431"
>
>↑だと面倒なので、代わりに
> '=ER431
>
>でも(たぶん)よかったと思いますけど。
ありがとうございました。解決しました。エクセル2003とエクセル2007が
混在しているものですから、上記の様に変更します。

1992 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free