VBAで前方一致するセル数を検索するマクロ

このQ&Aのポイント
  • VBAを使用して前方一致するセルの数を検索する方法について教えてください。
  • VBAを使って、特定の文字列で始まるセルの数を数える方法を教えてください。
  • VBAで前方一致するセルの数を検索するマクロについて教えてください。
回答を見る
  • ベストアンサー

VBAで前方一致するセル数を検索するマクロ

画像の作業をVBAで作成するには、どのような方法がありますか? --------------------------------------------------------------- "ABC"から始まるデータの個数(左3文字が"ABC"のデータの個数)が Sheet1とSheet2で同じであれば、 "ABC"から始まるセルをすべて黄色に塗りつぶし 異なっていれば、 msgbox "不一致" と表示する --------------------------------------------------------------- ロジックだけでも構いません、 ご教示頂れば幸いです

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.1

以下のような方法でいかがですか。 Sub Test() Dim Sh1 As Worksheet, Sh2 As Worksheet Dim MyRange1 As Range, MyRange2 As Range Dim SStr As String Set Sh1 = Sheets("Sheet1") Set Sh2 = Sheets("Sheet2") Set MyRange1 = Sh1.Range(Sh1.Cells(1, "A"), Sh1.Cells(Rows.Count, "A").End(xlUp)) Set MyRange2 = Sh2.Range(Sh2.Cells(1, "A"), Sh2.Cells(Rows.Count, "A").End(xlUp)) SStr = "ABC*" If Application.WorksheetFunction.CountIf(MyRange1, SStr) = _ Application.WorksheetFunction.CountIf(MyRange2, SStr) Then Call Cell_SetColor(MyRange1, SStr) Call Cell_SetColor(MyRange2, SStr) Else MsgBox "不一致", vbInformation End If Set MyRange1 = Nothing Set MyRange2 = Nothing Set Sh1 = Nothing Set Sh2 = Nothing End Sub Function Cell_SetColor(ByRef MyRange As Range, ByVal SStr As String) Dim c As Range For Each c In MyRange If c.Value Like SStr Then c.Interior.Color = vbYellow End If Next End Function

関連するQ&A

  • エクセルVBAで、条件に一致するセルへ移動

     エクセルVBAでシート内を検索し、条件に一致するセルを選択させたいのですが、どのようにしたら良いでしょうか?  同一データはシート内に一つしか無い前提です。 勉強不足ですみませんが、どなたかご教授お願いします。

  • 他シートのある列を検索して一致したらセルに色をつける方法

    次のような処理がしたいのですが、Excelの数式に詳しい方、ご教示お願いします。 次の3つのシートが一つのBOOKにあるとします。 ■Sheet1 1列目 AAAA BBBB CCCC : ■Sheet2 1列目 BBBB : ■Sheet3 1列目 AAAA CCCC : Sheet1の一列目にあるデータについて、Sheet2あるいはSheet3の1列目を検索し一致するものがあれば、Sheet1の一列目の各セルに色をつけるという処理をしたいです。 できれば、Sheet2に一致した場合と、Sheet3に一致した場合とで、色を変えたいです。 よろしくお願いします。

  • VBAで条件に一致するセルの隣の値をまとめる方法

    VBAで条件に一致する複数セルの隣のセルの値を取得し、まとめる方法教えて下さい! 下記例の様に、A列に商品コード、B列にサイズ値の入力されたデータが8万行ほどあり、別シートに商品コード毎にサイズ値をまとめたいです。 例: 処理前 A列(商品コード)      B列(サイズ値) abc1000           S abc1001           S abc1001           M abc1001           L abc1002           XS abc1002           S 処理後(別シート) A列(商品コード)      B列(サイズ値) abc1000           S abc1001           S:M:L abc1002           XS:S COUNTIFで連番を振ってMATCHとINDEX関数で抽出し、まとめるという方法で実現は出来たのですが、処理にかなりの時間を要するのでVBAならもっと高速にできるのではないかと思い質問させて頂きました。 よろしくお願い致します。

  • 空白セルと行に色をつけるVBA Excel2010

    VBAの超初心者です。 条件が一致した時に、セルの背景を黄色にしたいのですが、VBAで教えて下さいませんか? D1が空白セルの場合には、C1のみを黄色。 D1とB1の両方が空白の場合は、A1からC1を黄色にしたいのです。 尚、行はどんどん増えて行く予定です。 「条件付き書式」では考えておりません。 よろしくお願いします。

  • エクセルVBAで該当するセルに色をつけたい

    ご覧いただき、ありがとうございます。 当方、VBA初心者です。 エクセルVBAで、「対象の社名」に該当するセルに色をつけたいと思っています。 それぞれ別シートになります。 たとえば、abc(株)が対象なら、 1.(株)は(株)や株式会社など表記がバラバラなので取る⇒abcの文字列が検索対象 2.「検索シート」にあるabcを検索 3.対象のセルに色をつける 4.文字列がある限り(この場合は○がついている部分はずっと)検索続ける ※○の数式はつけた方が探しやすいと思って作ったので、なくても構いません わかりづらい文章ですみません。 ぜひお知恵を貸してください><

  • 完全一致したら複数のセル代入するマクロは?

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣から3番目までのセルに、後者のセルの右隣から3番目までの文字列を順に代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。複数のセルに順に代入するのに苦慮しています。よろしくお願い申し上げます。

  • VBAでセルの条件に合致したセルの選択

    いつもお世話になっております。 エクセルで毎日更新されるデータを使って添付ファイルのように表を更新していきたいと考えています。 (1) Sheet1(含損益の推移)Sheet2(DLデータ)の二つのシートを作り、毎日更新されるデータをDLデータに添付します。(当日データのみ) (2) Vlookup関数でDLデータからNOに対応した、価格を表示します。 (3) E列以降は、データ抽出日と発売日の差から、対応する日数目に価格が表示されるように、IF関数を使った数式を入れています。(黄色セル) 上記だと、DLデータに当日データのみを添付するため、例えば2月2日のときは黄色セルは表示されるけど、青色セルは表示されません(当然ですが・・・) そこで、VBA等でデータ更新する前に、青色セルの部分を自動で選択して、関数式⇒値に変換出来ないかと考えています。 そのような事は可能でしょうか? どなたかお知恵を貸してください。よろしくお願いいたします。

  • VBA 空白以外のセルをカウントして数値を返す

    エクセルVBAについて、初心者です。 例えば、A1からA5までに何か入力されている場合は、別シートのA1セルに個数を返す、というVBAを教えてください。 (A1からA5の5セルに3セルだけ文字列データが入っている場合は、別シートA1に3と入力される) 困っております。ご回答よろしくお願いいたします。

  • エクセルVBA セルを参照した文字検索でシートをアクティブにする

    VBA初心者で困っています。 ブックAのシート1の“A1”の値が、同一ブック内の違うシートにあるかどうか検索し、あればそのセルをアクティブにして黄色に色づけ、なければメッセージを返すという処理をVBAで行いたいです。 似たような質問があってそれを参考にしてみましたが どうも上手く動いてくれません。 参考にさせていただいたのは   Set r = Workbooks("ブックB.xls").Sheets("シート1").Columns("A") _     .Find(What:=Workbooks("ブックA.xls").Sheets("シート1").Range("A1").Value, _        LookIn:=xlValues, _        LookAt:=xlWhole, _        SearchOrder:=xlByColumns, _        SearchDirection:=xlNext, _        MatchCase:=True)   If r Is Nothing Then     MsgBox "no data"   Else     Application.Goto r     Set r = Nothing   End If End Sub というコードです どなたか、わかる方教えてください。

  • VBAでセルを条件数う塗りつぶしたい

    特定のセル文字(記号)を入力すると、その横のセルに条件分の数セルを塗りつぶしたいです。 条件付き書式ではなんとかできたのですが、できればVBAでできればと思っています。 たとえば、◎なら右に3つ黄色に △なら右に2つ青 ○なら右に1ピンク ☆なら、表の端まで赤に。 すべて、表が終われば、塗りつぶしはなしにしたいです。 どうか、よろしくお願いします。

専門家に質問してみよう