Excel VBA質問箱 IV

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

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


10855 / 13646 ツリー ←次へ | 前へ→

【19567】アスタリスクを含む行を抽出したい おがけん 04/11/9(火) 19:02 質問[未読]
【19568】Re:アスタリスクを含む行を抽出したい ちゃっぴ 04/11/9(火) 19:12 回答[未読]
【19571】Re:アスタリスクを含む行を抽出したい ちゃっぴ 04/11/9(火) 19:46 発言[未読]
【19570】Re:アスタリスクを含む行を抽出したい Kein 04/11/9(火) 19:40 回答[未読]
【19573】Re:アスタリスクを含む行を抽出したい おがけん 04/11/9(火) 20:14 発言[未読]
【19574】Re:アスタリスクを含む行を抽出したい Kein 04/11/9(火) 20:30 回答[未読]
【19575】Re:アスタリスクを含む行を抽出したい おがけん 04/11/9(火) 21:05 発言[未読]
【19578】Re:アスタリスクを含む行を抽出したい Kein 04/11/9(火) 21:33 回答[未読]
【19583】Re:アスタリスクを含む行を抽出したい おがけん 04/11/9(火) 22:10 お礼[未読]

【19567】アスタリスクを含む行を抽出したい
質問  おがけん  - 04/11/9(火) 19:02 -

引用なし
パスワード
   a列に得意先番号
b列に品名番号
c列に品名があります
これが3万行あります
c列の品名の中に「テレビ***・・・041000」のように
アスタリスクを含むものが、600個程度あると思います。
これらアスタリスクのある行だけを抽出したいのですが
関数またはvba(初心者)でお教えください。

【19568】Re:アスタリスクを含む行を抽出したい
回答  ちゃっぴ  - 04/11/9(火) 19:12 -

引用なし
パスワード
   Cellを総ループして
If 〜 Like "*[*]*" Then
でいいのでは?

【19570】Re:アスタリスクを含む行を抽出したい
回答  Kein  - 04/11/9(火) 19:40 -

引用なし
パスワード
   3万行でテストしているわけではありませんが・・

On Error Resume Next
With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
  .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
  .SpecialCells(3, 1).EntireRow.Hidden = True
  .ClearContents
End With

もしうまくいかなかったら、ループ処理すればいいでしょう。

Dim C As Range

On Error GoTo ErLine
With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
  .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
  For Each C In .SpecialCells(3, 1)
   C.EntireRow.Hidden = True
  Next
  .ClearContents
End With
ErLine:


 

【19571】Re:アスタリスクを含む行を抽出したい
発言  ちゃっぴ  - 04/11/9(火) 19:46 -

引用なし
パスワード
   あ、3万行あるなら、一度配列に入れてから
処理したほうがよいでしょうね。

【19573】Re:アスタリスクを含む行を抽出したい
発言  おがけん  - 04/11/9(火) 20:14 -

引用なし
パスワード
   ちゃぴさん、Kein さん 早速のレスありがとうございます。

初心者ですのでさらに教えてください。
Sub Macro1()

End Sub

ではさんで実行しましたが、
いずれもうんともすんとも言いません
なにかやり方がまずいですか?

>On Error Resume Next
>With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
>  .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
>  .SpecialCells(3, 1).EntireRow.Hidden = True
>  .ClearContents
>End With
>
>もしうまくいかなかったら、ループ処理すればいいでしょう。
>
>Dim C As Range
>
>On Error GoTo ErLine
>With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
>  .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
>  For Each C In .SpecialCells(3, 1)
>   C.EntireRow.Hidden = True
>  Next
>  .ClearContents
>End With
>ErLine:
>
>
>

【19574】Re:アスタリスクを含む行を抽出したい
回答  Kein  - 04/11/9(火) 20:30 -

引用なし
パスワード
   一度、こちらを実行してみて下さい。

Sub Macro_Test()
  Dim MyR As Range, C As Range

  Application.ScreenUpdating = False
  With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
    .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
   Set MyR = .SpecialCells(3, 1)
  End With
  For Each C In MyR
   C.EntireRow.Hidden = True
  Next
  Set MyR = Nothing
  Application.ScreenUpdating = True
End Sub

もしエラーが出たら、デバッグした個所を報告して下さい。
出なくて何も動かないようなら、AC列に 1 が表示されている行があるかないか、
調べてみて下さい。
対象シートを開いて実行することは、言うまでもありません。

【19575】Re:アスタリスクを含む行を抽出したい
発言  おがけん  - 04/11/9(火) 21:05 -

引用なし
パスワード
   ▼Kein さん お手数おかけします。
実行しましたら


型が一致しませんと表示され
以下が黄色反転しました。

.Formula = "=IF(ISERR(FIND(" * ",$C1)),1,"""")"

よろしくお願いします。


>一度、こちらを実行してみて下さい。
>
>Sub Macro_Test()
>  Dim MyR As Range, C As Range
>
>  Application.ScreenUpdating = False
>  With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
>    .Formula = "=IF(ISERR(FIND("*",$C1)),1,"""")"
>   Set MyR = .SpecialCells(3, 1)
>  End With
>  For Each C In MyR
>   C.EntireRow.Hidden = True
>  Next
>  Set MyR = Nothing
>  Application.ScreenUpdating = True
>End Sub
>
>もしエラーが出たら、デバッグした個所を報告して下さい。
>出なくて何も動かないようなら、AC列に 1 が表示されている行があるかないか、
>調べてみて下さい。
>対象シートを開いて実行することは、言うまでもありません。

【19578】Re:アスタリスクを含む行を抽出したい
回答  Kein  - 04/11/9(火) 21:33 -

引用なし
パスワード
   あぁ、分かりました。"" を抜かしてました。これでどうでしょーか ?

Sub R_hide()
  Dim MyR As Range, C As Range

  Application.ScreenUpdating = False
  On Error GoTo ELine
  With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
    .Formula = "=IF(ISERR(FIND(""*"",$C1)),1,"""")"
   Set MyR = .SpecialCells(3, 1)
  End With
  For Each C In MyR
   C.EntireRow.Hidden = True
  Next
ELine:
  Range("AC:AC").ClearContents
  Set MyR = Nothing
  Application.ScreenUpdating = True
End Sub

【19583】Re:アスタリスクを含む行を抽出したい
お礼  おがけん  - 04/11/9(火) 22:10 -

引用なし
パスワード
   ▼Kein さん:

見事に解決できました。
構文は私の理解できるものではありませんが
助かりました。
ありがとうございました。


>あぁ、分かりました。"" を抜かしてました。これでどうでしょーか ?
>
>Sub R_hide()
>  Dim MyR As Range, C As Range
>
>  Application.ScreenUpdating = False
>  On Error GoTo ELine
>  With Range("C1", Range("C65536").End(xlUp)).Offset(, 26)
>    .Formula = "=IF(ISERR(FIND(""*"",$C1)),1,"""")"
>   Set MyR = .SpecialCells(3, 1)
>  End With
>  For Each C In MyR
>   C.EntireRow.Hidden = True
>  Next
>ELine:
>  Range("AC:AC").ClearContents
>  Set MyR = Nothing
>  Application.ScreenUpdating = True
>End Sub

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