• ベストアンサー

値が入るセル全体を下にコピーした後に検索する方法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セル版での質問です。 以上、よろしくお願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

こんな事ですか? Sub Test()  Dim i As Long, ii As Long, R As Long  Dim j As Long, n As Long, Colors As Variant  Colors = Array(vbWhite, vbYellow, vbRed, vbGreen, vbBlue, vbMagenta, 42495)  Range("A11:R483").Clear  For i = 1 To Range("T1").Value   Cells(2, i + 19).Copy Cells(i * 11, "A")   ii = i * 11 + 1   Range("A1:R10").Copy Cells(ii, "A")   For R = ii To ii + 8 Step 2    For j = 1 To 16 Step 3     n = Application.CountIf(Cells(R, j).Resize(2, 3), Cells(i * 11, "A").Value)     Cells(R, j).Resize(2, 3).Interior.Color = Colors(n)    Next   Next  Next End Sub

関連するQ&A

専門家に質問してみよう