• ベストアンサー

エクセルで行列要素の検索

エクセルのシート上に10×10の枠を作り、それぞれのセルに任意のアルファベットを入れて、表を作ります。 その表の中に、縦にA、B、Cと並んだセルがあった場合、そのAとBとCのセルを赤く色を塗るようなマクロを作りたいのですが、どういう仕組みにしたらいいか考えつきません。 いい仕組みがあれば助言お願いします。

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

  • ベストアンサー
noname#252806
noname#252806
回答No.3

NO1です。 セルの検索は「For Each rg In 検索範囲」 を使うと 指定したエリアをエクセルが順次調査してくれます。 offsetを使うとこうなります。  Sub test() Dim rg As Range For Each rg In Range("A1:j10") If rg.Value = "B" Then   If rg.Offset(1, 0) = "C" And _ rg.Offset(-1, 0) = "A" Then Range(rg.Offset(1, 0).Address & ":" & rg.Offset(-1, 0).Address).Interior.ColorIndex = 3  End If End If Next rg End Sub

その他の回答 (3)

noname#204879
noname#204879
回答No.4

マクロをご所望(なぜかは不明)なので、別解ということで… 1.セル A1 に式 =CHAR(RANDBETWEEN(65,90)) を入力 2.セル A1 を次の[条件付き書式]に設定   セルの値が  次の値の間  ="A"  と  ="C"   パターン色: 赤 3.セル A1 を範囲 A1:J10 に複写

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

同一列内で、行方向にA-B-Cと連続した場合、赤く塗る例です。 10×10の範囲を選択して実行します。 Sub checkABC()   Dim r As Integer  '// 行カウンタ   Dim c As Integer  '// 列カウンタ   On Error Resume Next      With Selection     For c = 1 To .Columns.Count       For r = 1 To .Rows.Count - 2         If .Cells(r, c) = "A" _           And .Cells(r + 1, c) = "B" _           And .Cells(r + 2, c) = "C" Then                     .Cells(r, c).Interior.ColorIndex = 3           .Cells(r + 1, c).Interior.ColorIndex = 3           .Cells(r + 2, c).Interior.ColorIndex = 3                  End If       Next     Next   End With End Sub 10×10の表をA1から作った場合、条件付書式で、A3に条件を =OR(AND(A1="A",A2="B",A3="C"),AND(A2="A",A3="B",A4="C"),AND(A3="A",A4="B",A5="C")) のようにしてもできるはずです。ただし、1行目、2行目、8行目、10行目は算式は変更する必要があります。

noname#252806
noname#252806
回答No.1

こういうことですか? ・選択範囲のセルを順次検索して値がBがどうか調べる。 ・その上のセル(offset(0,-1)がAで その下(offset(0,1)がCなら3つのセルの色を赤くする。

excell
質問者

補足

そうです。まさにそれです。 比較はIFでなんとかなるとして、Bの検索のほうがどうすればよいかわかりません。

関連するQ&A

  • エクセル初心者です

    エクセル初心者です エクセルの教本らしきものをみながら実際にエクセルをいじってみました エクセルの教本では表の横列はABCといったアルファベットが並んでいて縦は123という数字がならんでます 。で表を作り、各セルに入力されてある数値を足したいとき教本では=b3+C3というように入力してエンターをおすとb3とC3に入力してある数値をたしたものの合計がででいます。 私もしてみたのですが私のパソコンはビスタでエクセル2007なのですが表の横列がアルファベットではなく縦も横も数字になっております。 この場合=b3+C3と入力しても正しく認識されざ#NAME?とでます。 私の表では横列がアルファベットでなく数字なのでBのとこを2 Cのとこを3にかえて計算=23+33としてエンターを押しても56とでて各セルのなかの数値同士を足したものがでてきません。 どうすればいいんですかね

  • マクロで色の設定がしたいのですが・・・

    こんにちは。 マクロで色の設定をしたいのですが、どうにもうまくいきません。 やりたいことは Sheet1に3×3の9つのセルを設定する Sheet2のA列に9行の枠を作る あらかじめ1は黒、2は灰色、3は・・・と1~15まで15色の色設定をしておく Sheet2の枠内に1~15の数字を入力したときに、Sheet1の9つのセル内の色が変わるようにしたいのです。 また、Sheet2のA1~A9がSheet1では3×3のセル設定なので 縦方向でも横方向でも進む順番は構わないのですが、 例えばSheet2:A1~A3=Sheet1:A1~A3、Sheet2:A4~A6=Sheet1:B1~B3、Sheet2:A7~A9=Sheet1:C1~C3と設定することは可能ですか? 現段階では、シート内でセルに直接数字を打ち込むと入力されたセルの色が変わるまでは出来たのですが、反映させることが出来ません。 宜しくお願い致します。

  • 「エクセルでのデータ検索」について

    「エクセルでのデータ検索」について 基本的な質問ですいません。 エクセルで、以下のようなことをしたいのですが・・・ 【シートA】   A  B  C  D E 1   ○ △ □ ◇ 2 あ ※ ※ ※ ※ 3 い ※ ※ ※ ※ 4 う ※ ※ ※ ※ (※は任意の数値) このとき、【シートB】に以下のように「◇」「う」と入力すると “B2”欄に【シートA】の“E4”(=「◇」と「う」の交差する位置) の値が出るようにしたいのです。  【シートB】   A  B  C  D E 1   ◇ 2 う 3 4   ちなみに【シートB】に入力する値はその都度変わるので、VLOOKUPや INDEXではうまくいきませんでした。 実際は長めのマクロで行っている作業の内の一部ですので、「関数」でも 「マクロ」でも、どちらでも対応できます。 ご教示のほど、よろしくお願いいたします。   

  • エクセルでの行列の入換え

    エクセルの表で A B    C 1 970701 ○○ 1 001001 △△ 1 010801 ×× 2 980701 ●● 2 021001 ☆☆ となってる表を A B     C   D   E    F   G  1 970701 ○○ 001001 △△ 010801 ××× 2 980701 ●● 021001 ☆☆ と入換えたいです。 Aのセルは社員番号で、3行もあれば、10行もあります。 行列を入換えて貼り付けていったのですが、 もっと簡単な方法がありますでしょうか? よろしくお願いします。

  • エクセルシートの票データの置き換えについて、

    エクセルのシートに (A1)から(D50)まで一覧表があり、それぞれ200個のセルに文字が入力されています。 これを別のシートに縦一列に並び替えたいのですが、 A1=(A1) A2=(B1) A3=(C1) A4=(D1) A5=(A2) A6=(B2) A7=(C2) A8=(D2) A9=(A3) A10=(B3)  ・  ・  ・ A199=(C50) A200=(D50) 出来れば簡易言語で、それで無理ならマクロでも結構です。 よろしくお願いします。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • Excel(エクセル)での自動改行検索

    Excel(エクセル)で 自動で縦書きを横書きにしたいのですが可能でしょうか? 例えば添付画像のように A1~C8の表を同じシート内の薄緑の部分が自動で表示されるようにしたいです。 セルE2~H4にどの様な式を入れればよいか教えてください! A列に対するB列の種類が3行と決まっていればわかったのですが、 セルA4の愛知のようにランダムで2行の時があり、 それに対応する式がまったくわかりません(ノД`)・゜・。 (マクロの仕方もわかりません) 本当に困っています ぜひお力添えのほど、よろしくお願い致します!!

  • エクセルマクロで日付検索について

    エクセルのマクロで日付を検索するマクロについて質問です。 ブックAのシート1のA列に A1 2017/3/13 A2 2017/4/1 A3 2017/4/19 A4 2017/5/16 A5 2017/7/17 A6 2017/9/5 というような日付が入っています。 ブックBのシート1のA1セルに2017/6/3と入力してマクロを実行した際に その日付に一番近い一つ前の日付を探し、見つけた日付のB列のセルを ブックBのシート1のA2セルに表示したいです。 今回の例であれば2017/6/3に対してブックAのシート1のA列はA4セルが当てはまり その当てはまったA4セルの1つ横のB4セルの内容をブックBのシート1のA2セルに表示するということです。 よろしくお願いします。

  • エクセル教えてください

    エクセルで縦・横セルに数値が入っている表があります。 全セルの数値から一度に同じ数値を引く方法を教えてください。 A1~A30 B1~B30 C1~C30・・・・・・ その一つ一つのセルから同じ数値を引きたいのです。 よろしくお願いします。

  • エクセルの行列番号

    エクセルの行番号・列番号の変更について教えてください。 通常だと行番号は「1・2・3…」列番号は「A・B・C…」と 縦に数字が並び横にアルファベットが並んでいると思います。 どこをどう触ったのかわからないのですが、入れ替わってしまいました。 縦にアルファベットが並び、横に数字が並んでしまっています。 また、別の人間も同じような現象を起こしてしまい、 縦も横も数字が表示されてしまっています。 これはどこをどうすれば直るのでしょうか? よろしくお願いいたします。

専門家に質問してみよう