Excel VBA質問箱 IV

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

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


8715 / 13644 ツリー ←次へ | 前へ→

【31570】Z仕様という文字を含む文字列の検索方法 Ryo 05/11/25(金) 18:08 質問[未読]
【31572】Re:Z仕様という文字を含む文字列の検索方法 ichinose 05/11/25(金) 18:12 発言[未読]
【31573】Re:Z仕様という文字を含む文字列の検索方法 Ryo 05/11/25(金) 18:23 お礼[未読]
【31574】Re:Z仕様という文字を含む文字列の検索方法 ichinose 05/11/25(金) 18:36 発言[未読]
【31576】Re:Z仕様という文字を含む文字列の検索方法 Ryo 05/11/25(金) 19:04 お礼[未読]
【31585】Re:Z仕様という文字を含む文字列の検索方法 Kein 05/11/25(金) 20:26 発言[未読]
【31587】Re:Z仕様という文字を含む文字列の検索方法 Akisame 05/11/25(金) 21:16 質問[未読]
【31588】Re:Z仕様という文字を含む文字列の検索方法 かみちゃん 05/11/25(金) 21:43 発言[未読]
【31589】Re:Z仕様という文字を含む文字列の検索方法 Kein 05/11/25(金) 21:57 発言[未読]
【31594】Re:Z仕様という文字を含む文字列の検索方法 Akisame 05/11/26(土) 9:25 質問[未読]
【31598】Re:Z仕様という文字を含む文字列の検索方法 かみちゃん 05/11/26(土) 9:42 発言[未読]
【31604】Re:Z仕様という文字を含む文字列の検索方法 Akisame 05/11/26(土) 17:50 質問[未読]
【31605】Re:Z仕様という文字を含む文字列の検索方法 かみちゃん 05/11/26(土) 18:05 発言[未読]
【31606】Re:Z仕様という文字を含む文字列の検索方法 Akisame 05/11/26(土) 22:53 お礼[未読]

【31570】Z仕様という文字を含む文字列の検索方法
質問  Ryo  - 05/11/25(金) 18:08 -

引用なし
パスワード
   Z仕様という文字を含む文字列の検索方法はありますか?

 A列       B列
2005/11/21   Z仕様
2005/11/22   -
2005/11/23   Z仕様にしました。
2005/11/24   今回はZ仕様

というファイルを現在は

If B列 = "Z仕様" Then

というようなIf文でB列の内容が「Z仕様」時、
A列の日付データを取り出すようにしています。

でもこの状態だとB列が「Z仕様」の時しかひっかからず
3行目や4行目の、「・・・でZ仕様」や「Z仕様で・・・」ではだめです。

アスタリスクをつければいいのかと思い、

If B列 = "*Z仕様*" Then

としましたがうまくいきません。

今回がはじめてマクロを組んでいる状態で初心者です。
どなたかご教授お願いいたします。

【31572】Re:Z仕様という文字を含む文字列の検索方...
発言  ichinose  - 05/11/25(金) 18:12 -

引用なし
パスワード
   ▼Ryo さん:
こんばんは。

>Z仕様という文字を含む文字列の検索方法はありますか?
>
> A列       B列
>2005/11/21   Z仕様
>2005/11/22   -
>2005/11/23   Z仕様にしました。
>2005/11/24   今回はZ仕様
>
>というファイルを現在は
>
>If B列 = "Z仕様" Then
>
>というようなIf文でB列の内容が「Z仕様」時、
>A列の日付データを取り出すようにしています。
>
>でもこの状態だとB列が「Z仕様」の時しかひっかからず
>3行目や4行目の、「・・・でZ仕様」や「Z仕様で・・・」ではだめです。
>
>アスタリスクをつければいいのかと思い、
>
If B列 like "*Z仕様*" Then

で試してみてください


>
>としましたがうまくいきません。

【31573】Re:Z仕様という文字を含む文字列の検索方...
お礼  Ryo  - 05/11/25(金) 18:23 -

引用なし
パスワード
   ichinose さま

すべて検索することができました。
本当にありがとうございました。

ところで今後の参考までに
「like」とはどのような時に使えるものなのでしょうか?

【31574】Re:Z仕様という文字を含む文字列の検索方...
発言  ichinose  - 05/11/25(金) 18:36 -

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

>ところで今後の参考までに
>「like」とはどのような時に使えるものなのでしょうか?
ん?、ですから、このようなパターンマッチングに使用できます。

Likeは、演算子のひとつです。つまり、= や Is の仲間と
言えます。

そのLikeのHelpを見ると、

文字列をパターン マッチング規則に従った任意の文字列式と比較する

という趣旨が記述されています。

このマッチング規則はある程度は覚えておいてください。

Like以外にも正規表現を使用すると
もっと複雑なマッチングも可能になります。

正規表現  Regular Expressions 等で検索してみてください。

この掲示板でも過去ログにいくつもあると思います。

【31576】Re:Z仕様という文字を含む文字列の検索方...
お礼  Ryo  - 05/11/25(金) 19:04 -

引用なし
パスワード
   ichinose さま

今回はとても勉強になりました。
ありがとうございました。

【31585】Re:Z仕様という文字を含む文字列の検索方...
発言  Kein  - 05/11/25(金) 20:26 -

引用なし
パスワード
   解決後ですが、数式を入力して判定をする方法なら・・

Sub PUp_St()
  On Error Resume Next
  With Range("A1", Range("A65536").End(xlUp)).Offset(, 255)
   .Formula = "=IF(ISERR(FIND(""Z仕様"",$B1)),1,"""")"
   .SpecialCells(3, 1).EntireRow.Hidden = True
   .ClearContents
  End With
End Sub

で、フィルターをかけたように抽出できます。

【31587】Re:Z仕様という文字を含む文字列の検索方...
質問  Akisame  - 05/11/25(金) 21:16 -

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

お聞きしたいんですが…
数式を入力して判断?で、フィルターをかけた感じに仕上がるんですか?
全部消えてしまいましたが…何かサジェスチョンいただけませんでしょうか。
EntireRow.Hiddenだけでなく文字色を変えるということもこの種の数式で
コードを作成できるのでしょうか。

>解決後ですが、数式を入力して判定をする方法なら・・
>
>Sub PUp_St()
>  On Error Resume Next
>  With Range("A1", Range("A65536").End(xlUp)).Offset(, 255)
>   .Formula = "=IF(ISERR(FIND(""Z仕様"",$B1)),1,"""")"
>   .SpecialCells(3, 1).EntireRow.Hidden = True
>   .ClearContents
>  End With
>End Sub
>
>で、フィルターをかけたように抽出できます。

【31588】Re:Z仕様という文字を含む文字列の検索方...
発言  かみちゃん  - 05/11/25(金) 21:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>数式を入力して判断?で、フィルターをかけた感じに仕上がるんですか?

そのとおりです。
数式の結果で数値が得られたセルを選択しています。
一般操作の「編集」−「ジャンプ」機能です。

>全部消えてしまいましたが…何かサジェスチョンいただけませんでしょうか。

全部消えた?数式の結果がどうなっていたのかというところだと思います。
 .SpecialCells(3, 1).EntireRow.Hidden = True
 .ClearContents
この2行をコメントにして、埋め込まれた数式の結果が全部"1"になっているのでしょうか?

>EntireRow.Hiddenだけでなく文字色を変えるということもこの種の数式で
>コードを作成できるのでしょうか。

できます。

セルを選択するだけでしたら、以下のような感じでできます。
A1〜A4に =1 などと数値が表示される数式を設定してください。
そのうち、どれかのセルは数式を設定しないでおきます。
すると、結果が数値となる数式のセルだけが選択されます。

また、B1〜B4には、数式ではなく数値そのものを入力してみてください。
そのうち、どれかのセルは数値を入力しないでおきます。
すると、数値が入っているセルだけが選択されます。

Sub test1()
 '数式の結果が数値になっているセルを選択する。
 '「編集」−「ジャンプ」の「セル選択」で「数式」「数値」のみにチェック
 Range("A1:A4").SpecialCells(3, 1).Select
 '以下と同意
 Range("A1:A4").SpecialCells(xlCellTypeFormulas, 1).Select
End Sub
 
Sub test2()
 '数値になっているセルを選択する。
 '「編集」−「ジャンプ」の「セル選択」で「定数」「数値」のみにチェック
 Range("B1:B4").SpecialCells(2, 1).Select
 '以下と同意
 Range("B1:B4").SpecialCells(xlCellTypeConstants, 1).Select
End Sub

あとは、Selectの部分をいろいろ応用すればできるというわけです。

【31589】Re:Z仕様という文字を含む文字列の検索方...
発言  Kein  - 05/11/25(金) 21:57 -

引用なし
パスワード
   全部消えた、ということはA列のデータを基準に出来ないということですね・・。
それなら With 〜 のところを

With Range("B1", Range("B65536").End(xlUp)).Offset(, 254)

と変更してみて下さい。(もちろん全行を表示状態にした上で、です)
>文字色を変えるということもこの種の数式でコードを作成できるのでしょうか。
もちろん、どんな処理でも可能です。その場合例えば、B列で該当する値のある
セルの文字色を青にするとして

.SpecialCells(3, 1).Offset(, -254).Font.ColorIndex = 5

などとすればよいのです。数式は IV列 に入力しているので、そこからの
Offset位置によって、何列にどんな処理をすればいいかを書き換えるだけです。

【31594】Re:Z仕様という文字を含む文字列の検索方...
質問  Akisame  - 05/11/26(土) 9:25 -

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

Ryoサンの31570の質問の表をベースに見ていましたので、
基準はB列です。
では次のコードで良いのでしょうか?
「Z仕様」と記述された行のフォント色が5になるというような理解を
しましたが、全てB列がフォント色5に変換されてしまいますが…
(Formulaのコードが働きませんが。256行「Z仕様」とある部分だけ
1が入ると良いということですね。)

Sub PUp_St()
  On Error Resume Next
  With Range("B1", Range("B65536").End(xlUp)).Offset(, 254)

   .Formula = "=IF(ISERR(FIND(""Z仕様"",$B1)),1,"""")"
   .SpecialCells(3, 1).Offset(, -254).Font.ColorIndex = 5

'   .SpecialCells(3, 1).EntireRow.Hidden = True'この2行の意味が
'   .ClearContents 'この2行の意味が今一分かりませんまたお聞きします。

  End With
End Sub


>全部消えた、ということはA列のデータを基準に出来ないということですね・・。
>それなら With 〜 のところを
>
>With Range("B1", Range("B65536").End(xlUp)).Offset(, 254)
>
>と変更してみて下さい。(もちろん全行を表示状態にした上で、です)
>>文字色を変えるということもこの種の数式でコードを作成できるのでしょうか。
>もちろん、どんな処理でも可能です。その場合例えば、B列で該当する値のある
>セルの文字色を青にするとして
>
>.SpecialCells(3, 1).Offset(, -254).Font.ColorIndex = 5
>
>などとすればよいのです。数式は IV列 に入力しているので、そこからの
>Offset位置によって、何列にどんな処理をすればいいかを書き換えるだけです。

【31598】Re:Z仕様という文字を含む文字列の検索方...
発言  かみちゃん  - 05/11/26(土) 9:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>「Z仕様」と記述された行のフォント色が5になるというような理解を
>しましたが、全てB列がフォント色5に変換されてしまいますが…

そのとおりです。
「Z仕様」と「Z仕様」は違います。(全角半角の違い)

>'   .SpecialCells(3, 1).EntireRow.Hidden = True'この2行の意味が

数式の結果が数値になっているセルを選択して、そのセルが含まれている行を非表示にするという意味です。
詳細は、ヘルプに載っています。

>'   .ClearContents 'この2行の意味が今一分かりませんまたお聞きします。

抽出できれば、設定した数式は不要になりますので、クリアしています。

【31604】Re:Z仕様という文字を含む文字列の検索方...
質問  Akisame  - 05/11/26(土) 17:50 -

引用なし
パスワード
   ▼かみちゃん さん:
お世話になります。

>>「Z仕様」と記述された行のフォント色が5になるというような理解を
>>しましたが、全てB列がフォント色5に変換されてしまいますが…
>
>そのとおりです。
????
>「Z仕様」と「Z仕様」は違います。(全角半角の違い)
チェックしています。
>
>>'   .SpecialCells(3, 1).EntireRow.Hidden = True'この2行の意味が
>
>数式の結果が数値になっているセルを選択して、そのセルが含まれている行を非表示にするという意味です。
>詳細は、ヘルプに載っています。
>
>>'   .ClearContents 'この2行の意味が今一分かりませんまたお聞きします。
>
>抽出できれば、設定した数式は不要になりますので、クリアしています。

色々とアドバイスありがとうございます。
理屈は理解できました。しかし実際にコードを入れてやってもこちらの
思うとおりに行きません。その原因を知りたいのです。が

現在、ここでかかれていました次のコードで問題なくいけます…が
Keinsさんのやり方に興味をもって試行錯誤しています。
ど〜も上手く行きません
(すんなりと行ける)
Dim r As Range
Dim Myr As Range

Set Myr = Range(Cells(6, 2), Cells(65536, 2).End(xlUp))
For Each r In Myr
If r Like "*Z仕様*" Then
r.Offset(, -1).Interior.ColorIndex = 43

を⇒
(上手く行かないコード)
With Range("B6", Range("B65536").End(xlUp)).Offset(, 254)
   .Formula = "=IF(ISERR(FIND(""Z仕様"",$B6)),1,"""")"
   .SpecialCells(6, 1).Offset(, -254).interir.ColorIndex = 43
    '>>SpecialCellsは何を示すのでしょう?意味が分かりません。

'   .SpecialCells(3, 1).EntireRow.Hidden = True
'   .ClearContents'この2行に関しては再度お聞きします
End With

というようにしましたが
同じ結果が出ません…
Zに関しても半角のチェックしていますが。

問題点が有りましたら、ご指摘ください。
これが解決すると、EntiRow.Hiddenre…ClearContents
に関しても解決できると思います。

宜しくお願いします。

【31605】Re:Z仕様という文字を含む文字列の検索方...
発言  かみちゃん  - 05/11/26(土) 18:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>>「Z仕様」と記述された行のフォント色が5になるというような理解を
>>>しましたが、全てB列がフォント色5に変換されてしまいますが…
>>
>>そのとおりです。
>????

「Z仕様」(全角)という文字列がなければ、1を返せという数式が設定されていますので、「Z仕様」では、1が返ってしまいます。
さらに、数値が入っているセルを選択して、そのセルが含まれている行は非表示
とするというのがコードの機能概要です。
したがって、「全部消えた(非表示になった)」というのは、「Z仕様」(全角)
という文字列が入っている行は、一行もないということです。

>With Range("B6", Range("B65536").End(xlUp)).Offset(, 254)
>   .Formula = "=IF(ISERR(FIND(""Z仕様"",$B6)),1,"""")"
>   .SpecialCells(6, 1).Offset(, -254).interir.ColorIndex = 43
>    '>>SpecialCellsは何を示すのでしょう?意味が分かりません。

.SpecialCells(6,〜
の意味を何か間違えていませんか?「6」とはなんですか?
SpecialCells メソッドのヘルプと、以下の私のコメントを見てみてください。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=31588;id=excel

私も、最近、Keinさんが書かれたこの手の処理方法を勉強させていただき、なるほどなぁと感心した次第です。

【31606】Re:Z仕様という文字を含む文字列の検索方...
お礼  Akisame  - 05/11/26(土) 22:53 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございました。
よく分かりました。いろいろとご苦労をおかけしました。
サンプルなどもつけていただき更に理解が進みました。
ありがとうございました。
失礼します。

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