• ベストアンサー

【改造】検索値と一緒に出ている隣接数字を知るには?

いつもお世話になっております。 どかたかご存知でしたら回答をお願いします。 1ケ月程前に下記の質問をさせていただきました。 そして回答を頂きました。これを改造したく質問します。 尚、5×6マス以外に、5×5マス、5×7マスへの改造方法も教えて頂けると助かります。 ◆改造(付け加える)要件・・・下記以外は前回と同じです。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、  (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。【既存】  (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。【既存】  (3)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が全て同じなら、青く塗り潰す。【追加】 〇例題  A B C D E F G H I J K L M 1 01 11 16 26 31 40  08 15 21 25 30 35 2 02 03 06 17 27 41  01 11  26  28 31 36 3 04 09 12 19 22 42  02 03  06  16 17 37 4 05 13 14 23 29 43  04 09  12  22 27 38 5 07 10 18 20 24 27  05 13  19  23 29 39 6 7 04 13 16 30 31 33  05 08 20 22 26 37 8 02 15 17 24 29 34  01 03 07 18 19 38 9 01 03 07 19 25 35  04 12 14 16 25 39 10 11 12 14 21 27 36  10  11 21 23 27 40 11 06 09 10 23 28 37  06  08 09 20 28 41 複写数:01 ※最大1~43の数字が入る。 検索値:01 ※最大43個の数字が右に並ぶ。 〇結果  A1、H2、A9、H8:01が黄色で塗潰される。  A2、H3、A8   :02が赤色で塗潰される。  B2、I3、B9、I8 :03が青色で塗潰される。 〇青色を塗潰す説明  A1にある01の隣接数字は小さい順に、02、03、11  H2にある01の隣接数字は小さい順に、02、03、08、11、15  A9にある01の隣接数字は小さい順に、02、03、11、12、15  H8にある01の隣接数字は小さい順に、03、04、05、08、12  01が見つかった4か所全てに出現している隣接数字は03なので03を青色で塗潰す。  逆に03を検索値とした場合は、  B2にある03接数字は小さい順に、01、02、04、06、09、11、12、16  I3にある03隣接数字は小さい順に、01、02、04、06、09、11、12、26  B9にある03隣接数字は小さい順に、01、02、07、11、12、14、15、17  I8にある0の隣接数字は小さい順に、01、04、05、07、08、12、14、20  03が見つかった4か所全てに出現している隣接数字は01、12なので、  01、12を青色で塗潰す。 ****2018/11/21の質問の内容**** 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)     の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43  01 08 16 31 35 41 2 07 12 14 23 32 43  06 10 13 20 27 32 3 09 17 20 29 42 40  02 15 18 30 34 38 4 03 05 13 25 27 41  01 09 25 30 42 43 5 04 11 22 28 35 39  11 16 18 24 29 42 6 7 03 17 27 36 40 41  07 21 22 23 33 37 8 03 04 08 24 26 39  02 03 07 14 18 38 9 10 12 22 32 37 42  05 10 13 40 41 42 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 40 41 42 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1:41が黄色で塗潰される。  E3、F3、F4 :40、41、42が赤色で塗潰される。  E7、F7   :40、41が赤色で塗潰される。   F9、E10、F10:41、42、42が赤色で塗潰される。   K9、L9、M9、K10、L10、M10、K11、L11、M11:40、41、42が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1481)
回答No.2

検索値の数を数えれば、複写数はいらないと思うのですが。 複写数:Q1 検索値:Q2から右へ に直しました。 複写数と検索値の数が合わない場合の動作保証はしません。 ' Sub Macro1() '   Dim Col As Integer   Dim IRange As Range '   Cells.Interior.Pattern = xlNone   [A13:O557].ClearContents '   For Col = 0 To [Q1] - 1     Set IRange = [A1:O11].Offset(Col * 13)     IRange = [A1:O11].Value     Level1 IRange, Cells(2, Col + 17)   Next Col End Sub サブルーチンは前と同じ

moguo4649
質問者

お礼

早速の回答ありがとうございます。 また、ワガママを聞いてください重ねてありがとうございます。 得たい結果となりました。 また、質問を見かけたら回答頂けると助かります。

その他の回答 (1)

  • SI299792
  • ベストアンサー率48% (715/1481)
回答No.1

面白そうなので作ってみました。 前の質問のアドレスが書いてありません。 しかも質問履歴が非公開になっています。 前のプログラムが判らないので、検索値の指定方法は独自です。 まず、Q列1行目に「検索値」と入れて下さい。(タイトルなのでなくてもいい) Q列2行目から、検索値を入れます。 検索値の数だけコピーして実行します。 A1~O11 を範囲にしてあるので、改造なしで、5×7まで行けます。データのない所は空白にしておけばいいです。 青と赤がダブる場合、(差が1しかなく、隣接する全てに存在した場合)、赤を優先しています。 ' Option Explicit ' Sub Macro1() '   Dim Row As Integer   Dim RowCpy As Integer   Dim IRange As Range '   Cells.Interior.Pattern = xlNone   [A13:O557].ClearContents '   For Row = 2 To Cells(Rows.Count, "Q").End(xlUp).Row     RowCpy = Row - 2     Set IRange = [A1:O11].Offset(RowCpy * 13)     IRange = [A1:O11].Value     Level1 IRange, Cells(Row, "Q")   Next Row End Sub ' Sub Level1(IRange As Range, ByVal Search As Integer) '   Dim Cell1 As Range   Dim TableC(43) As Integer   Dim Count As Integer '   For Each Cell1 In IRange '     If Cell1 = Search Then       Count = Count + 1       Level2 Cell1, TableC(), Search       Cell1.Interior.Color = vbYellow     End If   Next Cell1 '   For Each Cell1 In IRange '     If Cell1.Interior.Color <> vbBlue Then     ElseIf TableC(Cell1) < Count Then       Cell1.Interior.Pattern = xlNone     End If   Next Cell1 End Sub ' Sub Level2(Cell1 As Range, TableC() As Integer, Search As Integer) '   Dim Cell2 As Range   Dim TableB(43) As Boolean   Dim RowF As Boolean   Dim ColF As Boolean '   RowF = Cell1.Row > 1   ColF = Cell1.Column > 1 '   For Each Cell2 In Cell1.Offset(RowF, ColF).Resize(2 - RowF, 2 - ColF) '     If Cell2 < "01" Then     ElseIf Abs(Cell1 - Cell2) = 1 Then       Cell2.Interior.Color = vbRed     ElseIf Cell1.Address <> Cell2.Address Then       Cell2.Interior.Color = vbBlue       TableC(Cell2) = TableC(Cell2) + 1 - TableB(Cell2)       TableB(Cell2) = True     End If   Next Cell2 End Sub 実際にやってみたら、 33,34,42,43 のように、1か所しかない場合、周り全部青になりました。 1か所なら見つかった1か所全てに出現している事になります。

moguo4649
質問者

補足

早速の回答ありがとうございます。 教えて頂いたソースを貼って実行したところやりたいことができました。 お願いばかりして恐縮ですが、 教えて頂いたソースでは、 Q2から下に検索値を入れた分だけコピーしながら、 検索する動きですが、質問文にも書いてますが、 複写数と検索値を分けた場合はどのようなソースになりますか? >複写数:※入力すると、入力値-1で下にコピーされる。最大1~43の数字が入る。 >検索値:※最大43個の検索数字が右に並ぶ。 下記の例では、複写数が03なので、コピー元から同じ内容で2つ下にコピーされた後に、 1つ目を検索値15で検索、2つ目を検索値の30で検索、3つ目を検索値の43で検索する。 例)  複写数:03  検索値:15 30 43

関連するQ&A

  • 【改造】検索値と一緒に出ている隣接数字を知るには2

    いつもお世話になっております。 どかたかご存知でしたら回答をお願いします。 ここ最近、同じ様な質問をしておりますが、よろしくお願いします。 ◆改造(付け加える)要件・・・下記以外は前回と同じです。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、  (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。【既存】  (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。【既存】  (3)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が全て同じなら、青く塗り潰す。【既存】  (4)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が1ヶ所を除いて全て同じなら、緑色で塗り潰す。【追加】 〇例題  A B C D E F G H I J K L M 1 01 11 16 26 31 40  08 15 21 25 30 35 2 02 03 06 17 27 41  01 11 26 28 31 36 3 04 09 12 19 22 42  02 03 06 16 17 37 4 05 13 14 23 29 43  04 09 12 22 27 38 5 07 10 18 20 24 27  05 13 19 23 29 39 6 7 04 13 16 30 31 33  05 08 20 22 26 37 8 02 15 17 24 29 34  01 03 07 18 19 38 9 01 03 07 19 25 35  04 12 14 16 25 39 10 11 12 14 21 27 36  10 11 21 23 27 40 11 06 09 10 23 28 37  06 08 09 20 28 41 複写数:01 ※最大1~43の数字が入る。 検索値:01 ※最大43個の数字が右に並ぶ。 〇結果  A1、H2、A9、H8:01が黄色で塗潰される。  A2、H3、A8   :02が赤色となる筈だが、3ヶ所で出ているので緑色で塗潰す。  B2、I3、B9、I8 :03が青色で塗潰される。   B1、I2、A10   :11が緑色で塗潰される。  〇青色、緑色で塗潰す説明  A1にある01の隣接数字は小さい順に、02、03、11  H2にある01の隣接数字は小さい順に、02、03、08、11、15  A9にある01の隣接数字は小さい順に、02、03、11、12、15  H8にある01の隣接数字は小さい順に、03、04、05、08、12  01が見つかった4か所全てに出現している隣接数字は03なので03を青色で塗潰す。  01が見つかった3か所全てに出現している隣接数字は02と11なので、  02と11を緑色で塗潰す。  ※02は本来、01の差:1のため赤色となるが、緑色の条件にも当てはまるため最終的に  緑色で塗潰す。(青色の条件に当てはまった場合も緑色の条件にも当てはまれば最終的に  緑色で塗潰す。)  逆に03を検索値とした場合は、  B2にある03接数字は小さい順に、01、02、04、06、09、11、12、16  I3にある03隣接数字は小さい順に、01、02、04、06、09、11、12、26  B9にある03隣接数字は小さい順に、01、02、07、11、12、14、15、17  I8にある0の隣接数字は小さい順に、01、04、05、07、08、12、14、20  03が見つかった4か所全てに出現している隣接数字は01、12なので、  01、12を青色で塗潰す。  03が見つかった3か所全てに出現している隣接数字は02、04、11、なので、  02、04、11を緑色で塗潰す。 ****2018/11/21の質問の内容**** 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)     の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43  01 08 16 31 35 41 2 07 12 14 23 32 43  06 10 13 20 27 32 3 09 17 20 29 42 40  02 15 18 30 34 38 4 03 05 13 25 27 41  01 09 25 30 42 43 5 04 11 22 28 35 39  11 16 18 24 29 42 6 7 03 17 27 36 40 41  07 21 22 23 33 37 8 03 04 08 24 26 39  02 03 07 14 18 38 9 10 12 22 32 37 42  05 10 13 40 41 42 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 40 41 42 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1:41が黄色で塗潰される。  E3、F3、F4 :40、41、42が赤色で塗潰される。  E7、F7   :40、41が赤色で塗潰される。   F9、E10、F10:41、42、42が赤色で塗潰される。   K9、L9、M9、K10、L10、M10、K11、L11、M11:40、41、42が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。

  • 検索値と同じ値か、隣接数字との差が0か1なら塗潰す

    どなたかご存知でしたら回答をお願いします。 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)     の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43  01 08 16 31 35 41 2 07 12 14 23 32  43   06 10 13 20 27 32 3 09 17 20 29 42  40   02 15 18 30 34 38 4 03 05 13 25 27  41   01 09 25 30 42 43 5 04 11 22 28 35  39   11 16 18 24 29 42 6 7 03 17 27 36 40 41   07 21 22 23 33 37 8 03 04 08 24 26  39   02 03 07 14 18 38 9 10 12 22 32 37  42  05 10 13 40 41 42 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 40 41 42 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1:41が黄色で塗潰される。  E3、F3、F4 :40、41、42が赤色で塗潰される。  E7、F7   :40、41が赤色で塗潰される。   F9、E10、F10:41、42、42が赤色で塗潰される。   K9、L9、M9、K10、L10、M10、K11、L11、M11:40、41、42が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。

  • 5×6マス検索→5×5マス検索への改造の仕方。

    いつもお世話になっております。 先日こちらで、「検索値と同じ値か、隣接数字との差が0か1なら塗潰す」を 質問させて頂き、回答をいただきました。 この時は5×6マスが4つあるケースでしたが、 これを、以下の様に5×5マスが4つあるケースでは どうすればよいでしょうか? マスが変更になった以外は前回と変更ありません。 できれば、5×7マスが4つのケースも教えて頂けると助かります。  1つ目の5×5マス:A1~E5  2つ目の5×5マス:G1~K5  3つ目の5×5マス:A7~E11  4つ目の5×5マス:G7~K11   A B C D E  F G H I J K   1 01 08 11 18 25   03 06 17 20 24 2 02 19 23 26 27   01 08 16 18 25 3 10 15 28 29 30   02 11 19 23 26 4 04 07 12 14 21   10 15 27 28 30 5 05 09 13 22 31   04 07 12 21 29 6 7 08 11 12 20 28  04 15 17 25 31 8 06 07 22 23 26  01 09 13 19 29 9 01 09 19 24 29  10 11 14 24 28 10 03 10 14 18 27  03 05 18 21 27 11 02 05 16 21 30  02 16 17 30 31 ****** 以下は前回の質問 ****** 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)     の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43  01 08 16 31 35 41 2 07 12 14 23 32 43  06 10 13 20 27 32 3 09 17 20 29 42 40  02 15 18 30 34 38 4 03 05 13 25 27 41  01 09 25 30 42 43 5 04 11 22 28 35 39  11 16 18 24 29 42 6 7 03 17 27 36 40 41  07 21 22 23 33 37 8 03 04 08 24 26 39  02 03 07 14 18 38 9 10 12 22 32 37 42  05 10 13 40 41 42 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 40 41 42 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1:41が黄色で塗潰される。  E3、F3、F4 :40、41、42が赤色で塗潰される。  E7、F7   :40、41が赤色で塗潰される。   F9、E10、F10:41、42、42が赤色で塗潰される。   K9、L9、M9、K10、L10、M10、K11、L11、M11:40、41、42が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。

  • 検索値と同じ値か、左右の数字と連続数字なら塗潰す。

    どなたかご存知でしたら回答をお願いします。 【質問】 例題の様に5×6マスが4つあり、その中を1~43の数字が重複有りで入っています。  1つ目の5×6マス:A1~F5  2つ目の5×6マス:H1~M5  3つ目の5×6マス:A7~F11  4つ目の5×6マス:H7~M11 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、上記4つの5×6のセルを1塊りとして下にコピーする   (最大:43)。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、   (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。   (2)検索値の左右が検索値との連続数字なら、検索値とその左右のセルを赤色で塗潰す。 〇例題   A B C D E F  G H I J K L M  1 06 21 23 36 37 43   01 08 16 31 35 41 2 07 12 14 23 26  27   06 10 13 20 31 37 3 09 17 20 29 32  39   02 15 18 30 34 38 4 03 05 13 25 27  40   01 09 25 30 42 43 5 04 11 22 28 35  38   11 16 18 24 29 42 6 7 03 17 27 36 40 41   07 21 22 23 33 37 8 03 04 08 24 26  39   02 03 07 14 18 38 9 10 12 22 32 37  42   05 10 13 28 36 40 10 02 09 25 32 41 42  07 13 22 40 41 42 11 08 14 23 24 30 39  03 29 31 32 33 40 複写数:01 ※最大1~43の数字が入る。 検索値:41 ※最大43個の数字が右に並ぶ。 〇結果  M1、F7:41が黄色で塗潰される。  E10、F10:連続数字(41、42)が赤色で塗潰される。  K10、L10、M10:連続数字(40、41、42)が赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。  ・複写数欄に入力できる数字は1~43迄の1つです。 以上、よろしくお願いします。  

  • 値が入るセル全体を下にコピーした後に検索する方法2

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~r、1~10の合計180個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2,c1,c2の6つのセルで1つのマスとみなすと、 180個のセルは縦:5マス、横:6マスの合計30マスとなります。 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、a1~r10の180個のセルを1塊りとして下にコピーする。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側のマス(4つのセルの集合)を塗潰す。   具体的には、    (1)1つのマスに一致した数字が1個の場合は黄色で塗り潰す。    (2)1つのマスに一致した数字が2個の場合は赤色で塗り潰す。    (3)1つのマスに一致した数字が3個の場合は緑色で塗り潰す。    (4)1つのマスに一致した数字が4個の場合は青色で塗潰す。    (5)1つのマスに一致した数字が5個の場合は紫色で塗潰す。    (6)1つのマスに一致した数字が6個の場合はオレンジ色で塗潰す。 〇例題  a b c d e f g h i j k l m n o p q r 1 02 05 07 07 14 13 15 16 17 28 22 32 33 37 91 92 93 94 95 2 03 03 07 14 13 28 99 31 23 32 31 36 32 37 81 82 83 84 85 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 71 72 73 74 79 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 61 60 54 49 48 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 50 55 52 67 99 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 41 42 43 44 45 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 51 68 75 76 77 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 96 97 88 87 66 9 07 07 10 04 11 05 18 13 27 20 28 33 30 34 86 39 38 49 62 10 07 07 16 14 19 24 24 25 27 26 33 32 35 35 54 86 87 88 78 複写数:01 ※最大1~43の数字が入る。 検索値:07 ※最大43個の数字が右に並ぶ。 【結果】 検索値:07 ※上記、検索値の左から1つずつ値を取得して下記のセルを検索する。 02 05 07 07 14 13 15 16 17 28 22 32 33 37 91 92 93 94 95 03 03 07 14 13 28 99 31 23 32 31 36 32 37 81 82 83 84 85 05 01 07 06 15 07 20 08 26 12 27 19 32 37 71 72 73 74 79 04 03 08 10 10 14 12 17 24 18 30 22 37 24 61 60 54 49 48 08 01 13 02 16 04 25 09 28 15 34 24 36 34 50 55 52 67 99 01 06 05 12 18 14 22 19 23 30 26 35 28 36 41 42 43 44 45 02 03 04 11 06 16 20 21 25 26 29 27 31 29 51 68 75 76 77 07 07 08 10 09 14 17 15 18 21 19 26 20 34 96 97 88 87 66 07 07 10 04 11 05 18 13 27 20 28 33 30 34 86 39 38 49 62 07 07 16 14 19 24 24 25 27 26 33 32 35 35 54 86 87 88 78 a11に”検索値”が1個コピーされ、 次にa1~r10までのセルの内容がa12~r22にコピーされた後、 コピーされた検索値の07で検索後に07が入った下記の6マス(36セル)が塗潰される。 検索値に07を入れたら、下記の6マス(36セル)が塗潰される。 a1,b1,c1,a2,b2,c2 ・・・ 2個一致なので、赤色で塗潰される。 d1,e1,f1,d2,e2,f2・・・ 1個一致なので、黄色で塗潰される。 a3,b3,c3,a4,b4,c4 ・・・1個一致なので、黄色で塗潰される。 d3,e3,f3,d4,e4,f4  ・・・1個一致なので、黄色で塗潰される。 a7,b7,c7,a8,b8,c8 ・・・2個一致なので、赤色で塗潰される。 a9,b9,c9,a10,b10,c10・・・4個一致なので、青色で塗潰される。 ※複写数と検索値が複数件ある場合は、複写数の数だけ下にa1~r10の内容がコピーされて、  検索値の値の左側から1個ずつコピーされその値で検索される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=6セルです。※a1,a2,b1,b2,c1,c2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は30マス(180セル)全体で    6個迄です(1マスに6個入る事も有るし、6マスに1個ずつ入る事もあります。)  ・検索値欄に入力できる数字は最大43個で、1~43迄の数字です。   ・複写数欄に入力できる数字は1~43迄の1つです。   ※複写数と検索値の数は一致していない場合はエラーとして動作をSTOPします。    例1)複写数:3、検索値:2,5,4,37,18 →検索値の数と複写数が不一致。    例2)複写数:0 検索値:3 →複写数がゼロのため。    例3)複写数:1 検索値:0 →検索値がゼロのため。   ※複写数分、a1~r10の180個のセルは下にコピーされ、検索値の値は左から    1つずづ使用して、実際の検索と結果としての値として使用します。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) ・この質問は先月、「値が入るセル全体を下にコピーした後に検索する方法」という   タイトルで質問させて頂いた、6セル版での質問です。 以上、よろしくお願いします。

  • 値が入るセル全体を下にコピーした後に検索する方法

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2の4つのセルで1つのマスとみなすと、 140個のセルは縦:5マス、横:7マスの合計35マスとなります。 使い方としては、  (1)複写数欄と検索値欄それぞれに値を入れます。  (2)複写数欄の数だけ、a1~n10の140個のセルを1塊りとして下にコピーする。   検索値欄の検索値も1つコピーする。  (3)コピー後に検索値欄の値でコピーした側のマス(4つのセルの集合)を塗潰す。   具体的には、    (1)1つのマスに一致した数字が1個の場合は黄色く塗り潰す。    (2)1つのマスに一致した数字が2個の場合は赤く塗り潰す。    (3)1つのマスに一致した数字が3個の場合は緑色で塗り潰す。    (4)1つのマスに一致した数字が4個の場合は青色で塗潰す。 〇例題  a b c d e f g h i j k l m n 1 02 05 07 07 14 13 15 16 17 28 22 32 33 37 2 03 03 07 14 13 28 99 31 23 32 31 36 32 37 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 9 07 07 10 04 11 05 18 13 27 20 28 33 30 34 10 07 07 16 14 19 24 24 25 27 26 33 32 35 35 複写数:01 ※最大1~37の数字が入る。 検索値:07 ※最大37個の数字が右に並ぶ。 【結果】 検索値:07 ※上記、検索値の左から1つずつ値を取得して下記のセルを検索する。 02 05 07 07 14 13 15 16 17 28 22 32 33 37     03 03 07 14 13 28 99 31 23 32 31 36 32 37 05 01 07 06 15 07 20 08 26 12 27 19 32 37 04 03 08 10 10 14 12 17 24 18 30 22 37 24 08 01 13 02 16 04 25 09 28 15 34 24 36 34 01 06 05 12 18 14 22 19 23 30 26 35 28 36 02 03 04 11 06 16 20 21 25 26 29 27 31 29 07 07 08 10 09 14 17 15 18 21 19 26 20 34 07 07 10 04 11 05 18 13 27 20 28 33 30 34 07 07 16 14 19 24 24 25 27 26 33 32 35 35 a11に”検索値”が1個コピーされ、 次にa1~n10までのセルの内容がa12~n22にコピーされた後、 コピーされた検索値の07で検索後に07が入った下記の5マス(20セル)が塗潰される。 c12,d12,c13,d13 ・・・ 3個一致なので、緑色で塗潰される。 c14,d14,c15,d15 ・・・ 1個一致なので、黄色で塗潰される。 e14,f14,e15,f15 ・・・ 1個一致なので、黄色で塗潰される。 a18,b18,a19,b19  ・・・2個一致なので、赤色で塗潰される。 a20,b20,a21,b21 ・・・4個一致なので、青色で塗潰される。 ※複写数と検索値が複数件ある場合は、複写数の数だけ下にa1~n10の内容がコピーされて、  検索値の値の左側から1個ずつコピーされその値で検索される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=4セルです。※a1,a2,b1,b2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は35マス(140セル)全体で    4個迄です(1マスに4個入る事も有るし、4マスに1個ずつ入る事もあります。)  ・検索値欄に入力できる数字は最大37個で、1~37迄の数字です。   ・複写数欄に入力できる数字は1~37迄の1つです。   ※複写数と検索値の数は一致していない場合はエラーとして動作をSTOPします。    例1)複写数:3、検索値:2,5,4,37,18 →検索値の数と複写数が不一致。   例2)複写数:0 検索値:3 →複写数がゼロのため。    例3)複写数:1 検索値:0 →検索値がゼロのため。   ※複写数分、a1~n10の140個のセルは下にコピーされ、検索値の値は左から    1つずづ使用して、実際の検索と結果としての値として使用します。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • 検索値が隣どうしの場合に黄色に塗潰されない。

    いつもお世話になっております。 どかたかご存知でしたら回答をお願いします。 QNo.9570997 で2018/12/25に質問させて頂き 昨日、回答を頂きましたが、1か所不具合があり修正したいですが 自力では無理なので再度質問させて頂きます。 ◆不具合内容  下記の”不具合がでるパターン”はその下にある”〇例題”の  A2:02→01 ※A1とA2の値が01となる。  A5:07→01  の2か所の値を変更したものです。 >複写数:01  >検索値:01   で、検索した場合、A2に01がありますが黄色に塗る潰されず  A1の01と、A5の01が塗り潰されます。  A2の01を黄色に塗潰すにはどうすればよいですか?  同じ値が隣同士に存在するといずれか1つしか黄色に塗潰されないです。    それ以外の機能は問題ありません。 〇不具合が出るパターン  A B C D E F G H I J K L M 1 01 11 16 26 31 40  08 15 21 25 30 35 2 01 03 06 17 27 41  01 11 26 28 31 36 3 04 09 12 19 22 42  02 03 06 16 17 37 4 05 13 14 23 29 43  04 09 12 22 27 38 5 01 10 18 20 24 27  05 13 19 23 29 39 6 7 04 13 16 30 31 33  05 08 20 22 26 37 8 02 15 17 24 29 34  01 03 07 18 19 38 9 01 03 07 19 25 35  04 12 14 16 25 39 10 11 12 14 21 27 36  10 11 21 23 27 40 11 06 09 10 23 28 37  06 08 09 20 28 41 ◆回答頂いたソース Option Explicit Sub Macro1() ' Dim Col As Integer Dim IRange As Range ' Cells.Interior.Pattern = xlNone [A13:O557].ClearContents ' For Col = 0 To [Q1] - 1 Set IRange = [A1:O11].Offset(Col * 13) IRange = [A1:O11].Value Level1 IRange, Cells(2, Col + 17) Next Col End Sub ' Sub Level1(IRange As Range, ByVal Search As Integer) ' Dim Cell1 As Range Dim TableC(43) As Integer Dim Count As Integer ' For Each Cell1 In IRange ' If Cell1 = Search Then Count = Count + 1 Level2 Cell1, TableC(), Search Cell1.Interior.Color = vbYellow End If Next Cell1 ' For Each Cell1 In IRange ' If Cell1.Interior.Color <> vbBlue Then ElseIf TableC(Cell1) < Count Then Cell1.Interior.Pattern = xlNone End If Next Cell1 End Sub ' Sub Level2(Cell1 As Range, TableC() As Integer, Search As Integer) ' Dim Cell2 As Range Dim TableB(43) As Boolean Dim RowF As Boolean Dim ColF As Boolean ' RowF = Cell1.Row > 1 ColF = Cell1.Column > 1 ' For Each Cell2 In Cell1.Offset(RowF, ColF).Resize(2 - RowF, 2 - ColF) ' If Cell2 < "01" Then ElseIf Abs(Cell1 - Cell2) = 1 Then Cell2.Interior.Color = vbRed ElseIf Cell1.Address <> Cell2.Address Then Cell2.Interior.Color = vbBlue TableC(Cell2) = TableC(Cell2) + 1 - TableB(Cell2) TableB(Cell2) = True End If Next Cell2 End Sub *** 2018/12/25 の質問 *** 【改造】検索値と一緒に出ている隣接数字を知るには? いつもお世話になっております。 どかたかご存知でしたら回答をお願いします。 1ケ月程前に下記の質問をさせていただきました。 そして回答を頂きました。これを改造したく質問します。 尚、5×6マス以外に、5×5マス、5×7マスへの改造方法も教えて頂けると助かります。 ◆改造(付け加える)要件・・・下記以外は前回と同じです。  (3)コピー後に検索値欄の値でコピーした側の4つの5×6のセル内を検索して塗潰す。   具体的には、  (1)検索値と同じ値を見つけたら、黄色でセルを塗潰す。【既存】  (2)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字との差が0か1なら、検索値とそのセルを赤色で塗潰す。【既存】  (3)検索値と同じ値で隣接する8方向(上、下、左、右、右下、左下、右上、左上)   の数字が全て同じなら、青く塗り潰す。【追加】 〇例題  A B C D E F G H I J K L M 1 01 11 16 26 31 40  08 15 21 25 30 35 2 02 03 06 17 27 41  01 11 26 28 31 36 3 04 09 12 19 22 42  02 03 06 16 17 37 4 05 13 14 23 29 43  04 09 12 22 27 38 5 07 10 18 20 24 27  05 13 19 23 29 39 6 7 04 13 16 30 31 33  05 08 20 22 26 37 8 02 15 17 24 29 34  01 03 07 18 19 38 9 01 03 07 19 25 35  04 12 14 16 25 39 10 11 12 14 21 27 36  10 11 21 23 27 40 11 06 09 10 23 28 37  06 08 09 20 28 41 複写数:01 ※最大1~43の数字が入る。 検索値:01 ※最大43個の数字が右に並ぶ。 〇結果  A1、H2、A9、H8:01が黄色で塗潰される。  A2、H3、A8   :02が赤色で塗潰される。  B2、I3、B9、I8 :03が青色で塗潰される。 〇青色を塗潰す説明  A1にある01の隣接数字は小さい順に、02、03、11  H2にある01の隣接数字は小さい順に、02、03、08、11、15  A9にある01の隣接数字は小さい順に、02、03、11、12、15  H8にある01の隣接数字は小さい順に、03、04、05、08、12  01が見つかった4か所全てに出現している隣接数字は03なので03を青色で塗潰す。  逆に03を検索値とした場合は、  B2にある03接数字は小さい順に、01、02、04、06、09、11、12、16  I3にある03隣接数字は小さい順に、01、02、04、06、09、11、12、26  B9にある03隣接数字は小さい順に、01、02、07、11、12、14、15、17  I8にある0の隣接数字は小さい順に、01、04、05、07、08、12、14、20  03が見つかった4か所全てに出現している隣接数字は01、12なので、  01、12を青色で塗潰す。

  • 4つのセルを1つの塊り(マス)と捉えて塗潰す方法2

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2の4つのセルで1つのマスとみなすと、 140個のセルは縦:5マス、横:7マスの合計35マスとなります。 この条件で、検索値欄に1つ数字を入れたら、 一致した数字が入っているマス(4つのセルの集合)を塗潰すにはどうすればよいですか? 具体的には、1つのマスに一致した数字が2個以上重複している場合は、赤く塗り潰す。 1個の場合は黄色く塗り潰す事がしたいです。 〇例題  a b c d e f g h i j k l m n 1 02 05 08 09 14 13 15 16 17 28 22 32 33 37 2 03 03 05 14 13 28 99 31 23 32 31 36 32 37 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 9 01 02 10 04 11 05 18 13 27 20 28 33 30 34 10 12 11 16 14 19 24 24 25 27 26 33 32 35 35 検索値:07 【結果】 検索値に07を入れたら、下記の3マス(12セル)が塗潰される。 c3,d3,c4,d4 ・・・ 1個一致なので、黄色で塗潰される。 e3,f3,e4,f4 ・・・ 1個一致なので、黄色で塗潰される。 a7,b7,a8,b8  ・・・2個一致なので、赤色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=4セルです。※a1,a2,b1,b2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は35マス(140セル)全体で   4個迄です(1つのマスに4個入る事も有るし、4つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • 4つのセルを1つの塊り(マス)と捉えて塗潰す方法3

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2の4つのセルで1つのマスとみなすと、 140個のセルは縦:5マス、横:7マスの合計35マスとなります。 この条件で、検索値欄に1つ数字を入れたら、一致した数字が入っているマス (4つのセルの集合)を塗潰すにはどうすればよいですか? 具体的には、    (1)1つのマスに一致した数字が1個の場合は黄色く塗り潰す。    (2)1つのマスに一致した数字が2個の場合は赤く塗り潰す。    (3)1つのマスに一致した数字が3個の場合は緑色で塗り潰す。    (4)1つのマスに一致した数字が4個の場合は青色で塗潰す。 〇例題  a b c d e f g h i j k l m n 1 02 05 07 07 14 13 15 16 17 28 22 32 33 37 2 03 03 07 14 13 28 99 31 23 32 31 36 32 37 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 9 07 07 10 04 11 05 18 13 27 20 28 33 30 34 10 07 07 16 14 19 24 24 25 27 26 33 32 35 35 検索値:07 【結果】 検索値に07を入れたら、下記の5マス(20セル)が塗潰される。 c1,d1,c2,d2 ・・・ 3個一致なので、緑色で塗潰される。 c3,d3,c4,d4 ・・・ 1個一致なので、黄色で塗潰される。 e3,f3,e4,f4 ・・・ 1個一致なので、黄色で塗潰される。 a7,b7,a8,b8  ・・・2個一致なので、赤色で塗潰される。 a9,b9,a10,b10 ・・・4個一致なので、青色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=4セルです。※a1,a2,b1,b2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は35マス(140セル)全体で   4個迄です(1つのマスに4個入る事も有るし、4つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01) 以上、よろしくお願いします。

  • 6つのセルを1つの塊り(マス)と捉えて塗潰す方法

    どなたかご存知でしたら回答をよろしくお願いします。 【質問】 下図の様に、a~r、1~10の合計180個のセルに数字が1~99迄の重複有りで 入っています。a1,a2,b1,b2,c1,c2の6つのセルで1つのマスとみなすと、 180個のセルは縦:5マス、横:6マスの合計30マスとなります。 この条件で、検索値欄に1つ数字を入れたら、一致した数字が入っているマス (6つのセルの集合)を塗潰すにはどうすればよいですか? 具体的には、    (1)1つのマスに一致した数字が1個の場合は黄色く塗り潰す。    (2)1つのマスに一致した数字が2個の場合は赤色で塗り潰す。    (3)1つのマスに一致した数字が3個の場合は緑色で塗り潰す。    (4)1つのマスに一致した数字が4個の場合は青色で塗潰す。    (5)1つのマスに一致した数字が5個の場合は紫色で塗潰す。     (6)1つのマスに一致した数字が6個の場合はオレンジ色で塗潰す。  a b c d e f g h i j k l m n o p q r 1 02 05 07 07 14 13 15 16 17 28 22 32 33 37 91 92 93 94 95 2 03 03 07 14 13 28 99 31 23 32 31 36 32 37 81 82 83 84 85 3 05 01 07 06 15 07 20 08 26 12 27 19 32 37 71 72 73 74 79 4 04 03 08 10 10 14 12 17 24 18 30 22 37 24 61 60 54 49 48 5 08 01 13 02 16 04 25 09 28 15 34 24 36 34 50 55 52 67 99 6 01 06 05 12 18 14 22 19 23 30 26 35 28 36 41 42 43 44 45 7 02 03 04 11 06 16 20 21 25 26 29 27 31 29 51 68 75 76 77 8 07 07 08 10 09 14 17 15 18 21 19 26 20 34 96 97 88 87 66 9 07 07 10 04 11 05 18 13 27 20 28 33 30 34 86 39 38 49 62 10 07 07 16 14 19 24 24 25 27 26 33 32 35 35 54 86 87 88 78 検索値:07 【結果】 検索値に07を入れたら、下記の6マス(36セル)が塗潰される。 a1,b1,c1,a2,b2,c2 ・・・ 2個一致なので、緑色で塗潰される。 d1,e1,f1,d2,e2,f2・・・ 1個一致なので、黄色で塗潰される。 a3,b3,c3,a4,b4,c4 ・・・ 1個一致なので、黄色で塗潰される。 d3,e3,f3,d4,e4,f4  ・・・1個一致なので、黄色で塗潰される。 a7,b7,c7,a8,b8,c8 ・・・2個一致なので、赤色で塗潰される。 a9,b9,c9,a10,b10,c10・・・4個一致なので、青色で塗潰される。 〇注意事項  ・使用するエクセルは2010です。  ・1マス=6セルです。※a1,a2,b1,b2,c1,c2で1マスです。  ・セルに入っている数字はランダムで、同じ数字の重複は30マス(180セル)全体で   6個迄です(1つのマスに6個入る事も有るし、6つのマスに1個ずつ入る事も   あります。)  ・検索値欄に入力できる数字は1~99迄の1つです。  ・セルの数字は表示上、2桁で表しています。(例:1ではなく01)  ・この質問は先月、「4つのセルを1つの塊り(マス)と捉えて塗潰す方法3」という   タイトルで質問させて頂いた、6セル版での質問です。 以上、よろしくお願いします。

専門家に質問してみよう