同じ数字を2個使用している重複行の数字の出力方法2

このQ&Aのポイント
  • 重複した数字の行を出力する方法についての質問です。
  • 重複した数字の削除方法についての質問です。
  • 重複した数字の並び替え方法についての質問です。
回答を見る
  • ベストアンサー

同じ数字を2個使用している重複行の数字の出力方法2

いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】 2019/12/20 22:51に質問No.9692415として 『同じ数字を2個使用している重複行の数字の出力方法』という質問をさせて頂き、 nishi6様から回答を頂きました。 動作としては添付図のとおり5列×20行の数字の中から、2個の数字が重複していたら黄色でセルを塗り潰し、重複する行に重複した行を、実際に重複した2個の数字をH列~AA列に書き出します。)この時の質問から発展して、『同じ数字を2個使用している重複行の数字の出力方法2』が今回の質問です。 具体的には下記2つです。 (1)重複数字1~重複数字10の2列×20行の数字をAB列・AC列に縦に並べた後、昇順に並び変えて重複数字を削除する。 (2)重複数字1~重複数字10の2列×20行の数字をAE列のみに縦に並べた後、  昇順に並び変えて重複数字を削除する。(又は、(1)で重複数字が削除された数字をAE列に1列に並べた後、昇順に並び変えて重複数字を削除する。) 以上、よろしくお願いします。

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

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

Option Explicit Option Base 1 ' Sub Macro1()   Dim Cell As Range   Dim Points(2 To 21, 31) As Integer   Dim Row1 As Integer   Dim Row2 As Integer   Dim Col1 As Integer   Dim Col2 As Integer   Dim RowO As Integer   Dim Index As Integer   Dim Count As Integer   Dim Col1S(5) As Integer   Dim Col2S(5) As Integer '   [B:F].Interior.Pattern = xlNone   [G2:AE32767].ClearContents '   For Each Cell In [B2:F21]     Points(Cell.Row, Cell) = Cell.Column   Next Cell '   For Row1 = 2 To 21 '     For Row2 = Row1 To 21       Count = 0 '       For Index = 1 To 31         Col1 = Points(Row1, Index)         Col2 = Points(Row2, Index) '         If Col1 > 0 And Col2 > 0 Then           Count = Count + 1           Col1S(Count) = Col1           Col2S(Count) = Col2         End If       Next Index '       If Count = 2 Then         ColorPoint Row1, Row2, Col1S(1), Col1S(2)         ColorPoint Row2, Row1, Col2S(1), Col2S(2)         RowO = RowO + 1         Col1 = Col1S(1)         Col2 = Col1S(2)         Col1 = Cells(Row1, Col1)         Col2 = Cells(Row1, Col2)         Cells(RowO, "AB") = Col1         Cells(RowO, "AC") = Col2         Cells(Col1, "AE") = Col1         Cells(Col2, "AE") = Col2       End If   Next Row2, Row1   Range("AB1:AC" & RowO).Sort KEY1:=[AB1]   [AE1:AE31].Sort KEY1:=[AE1] End Sub ' Sub ColorPoint(RowA As Integer, RowB As Integer, ColA As Integer, ColB As Integer)   Dim BData As String   Dim ColO As Integer '   BData = Cells(RowA, "G")   ColO = BData <> ""   Cells(RowA, "G") = "'" & BData & Left(",", -ColO) & RowB - 1   Cells(RowA, ColA).Interior.Color = vbYellow   Cells(RowA, ColB).Interior.Color = vbYellow   ColO = Cells(RowA, "AA").End(xlToLeft).Column   Cells(RowA, ColO + 1) = Cells(RowA, ColA)   Cells(RowA, ColO + 2) = Cells(RowA, ColB) End Sub

sazanami0422
質問者

お礼

大変助かりました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

下記やってみたが、ピント外れならすみません.無視してください。 === ・データ例は質問の画像と同じデータでテスト。 Sheet1の A2:E21(A1からでない。特に意味なし)) ・標準モジュールに Sub test02() Set sh1 = Worksheets("Sheet3") ’インプットデータ Set sh2 = Worksheets("Sheet4") ’アウトプット '-- k = 1 For i = 2 To 21 '---- For c1 = 1 To 5 For c2 = 1 To 5 If c1 < c2 Then sh2.Cells(k, 1) = "'" & Format(sh1.Cells(i, c1), "00") & "-" & Format(sh1.Cells(i, c2), "00") sh2.Cells(k, 2) = "'" & (i - 1) k = k + 1 End If Next c2 Next c1 '--- Next i End Sub ーーー 結果 略 自分の実行結果を見てください。 ーーー ・Sheet4のA列(第Iキー)-B列(第2キー)でソート  (VBAでもできるが今回は手動の、データー並べ替えで処理) Sheet4の上5行例示します。 参考 A列  B列 01-02 2 01-02 19 01-03 2 01-03 14 01-05 14 以下略 ちなみに、例えば、1を01などと表現しているのは、後のソートのことを 考えてです。 ーー 重複分を抜出し。直前行と同じなら抜出ししている。 Sub test03() Set sh1 = Worksheets("Sheet4") 'ソート後 Set sh2 = Worksheets("Sheet5") ’結果 k = 1 lr = sh1.Range("A100000").End(xlUp).Row MsgBox lr mae = sh1.Cells(1, "A") For i = 2 To lr If sh1.Cells(i, "A") = mae Then sh2.Cells(k, "A") = sh1.Cells(i, "A") sh2.Cells(k, "B") = sh1.Cells(i - 1, "B") sh2.Cells(k, "C") = sh1.Cells(i, "B") k = k + 1 Else End If mae = sh1.Cells(i, "A") Next i End Sub ーー 結果 Sheet5 A列  B列 C列 数字の組  下記行と行に出現 01-02 2 19 01-03 2 14 01-15 9 19 01-17 2 19 02-17 2 19 03-11 11 14 03-12 2 20 03-21 11 20 05-10 12 14 06-09 8 15 06-22 1 15 06-30 1 15 07-16 16 20 08-12 7 13 09-17 8 19 09-20 3 15 11-29 4 6 11-30 6 11 12-16 7 20 16-18 5 16 17-18 8 16 19-27 9 18 20-22 10 15 22-29 6 10 22-30 1 6 22-30 6 15 25-26 4 17 26-27 4 18 ーー これをSheet3の、原データにどう纏める(関連付けて表現する)のか 質問では、小生は分らなかったから、ここまでにした。 ーーー 元データのあり様がら、どういう思考過程(処理ロジック)で 本件を考えた結果で、少数例示をして、そして結果がこうなるという 読者向け、説明が必要だろうと思う。 ーーー 質問には、画像データでなく 4.6.15.22.30 1.2.3.12.17 8.9.13.20.21 11.25.26.27.29 16.18.19.28.31 11.22.23.29.30 4.8.12.16.25 6.9.17.18.26 1.13.15.19.27 2.20.22.28.29 3.11.21.30.31 5.7.10.14.24 5.8.12.15.29 1.3.5.10.11 6.9.20.22.30 7.13.16.17.18 2.21.24.25.26 10.19.23.26.27 1.2.9.15.17 3.7.12.16.21 のようなデータを質問文に載せてくれれば、 読者は、自分のシートにコピペして、 データー区切り位置でシートのデータが早く作れる。 画像を見て自分のシートにデータを作るのは、手間がかかると思いませんか。 ーー これは一体、何のデータですか。 丸投げ的に質問しているが、ただ回答者は やらされ感が強い。パズルか?ROT? 前質問から少しずつ、結果内容をずらして、何度も質問しているが またか感が強い。 ーー まず質問者は、処理ロジックを考えるのが、肝心と思う。 (本件は組み合わせとソート法ですが。あまり良いとは思ってない。 3組の文字になったら複雑になってお手上げ。) そういう話は一切出てないが、まず数学関連のカテゴリに 質問して、良いアイデアと方法を教えてもらったら。 エクセルやプログラムはそのあとのことだ。

sazanami0422
質問者

お礼

回答頂きありがとうございました。

関連するQ&A

  • 同じ数字を2個使用している重複行の数字の出力方法3

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】 2020/02/29 15:35に質問No.9718103として 『同じ数字を2個使用している重複行の数字の出力方法2』という質問を させて頂き、SI299792様から回答を頂きました。 動作としては添付図のとおり5列×20行の数字の中から、 2個の数字が重複していたら黄色でセルを塗り潰し、 重複する行に重複した行を実際に重複した2個の数字をH列~AA列に書き出し、 重複数字1~重複数字10の2列×20行の数字をAB列・AC列に縦に並べた後、 昇順に並び変えて重複数字を削除し、重複数字1~重複数字10の2列×20行の数字をAE列のみに縦に並べた後、昇順に並び変えて重複数字を削除する。 ここから今回の質問です。 (1)AB列・AC列に縦に並べた後、昇順に並び変えて重複数字を削除されるはずですが、添付図のとおりAB19・AC19、AB21・AC21に「22 30」が残っています。 この重複を削除するにはどうすればよいですか? 以上、よろしくお願いします。

  • 同じ数字を2個使用している重複行の数字の出力方法

    いつもお世話になっております。 ご存じの方がお見えでしたら回答をよろしくお願い致します。 【質問】  2019/12/08 22:31 に質問No.9687909 として  『同じ数字を3個~4個使用している重複行の塗り潰し2』という質問をさせて  頂き、SI299792様とnishi6様から回答を頂きました。  この時の質問から発展して、『同じ数字を2個使用している重複行の数字の出力  方法』が今回の質問です。添付図のとおり、5列×20行に絞り、2個の数字が  重複していたら黄色でセルを塗り潰し、”重複している行”をG列に書き出す事は  前回の回答から対応できましたが、実際にどの2個の数字が重複しているか塗潰  されたセルでは分かり難い場合があるため、H列~AA列に書き出す方法が知り  たく質問させて頂きます。 以上、よろしくお願いします。

  • セルの数字を昇順に並び替えて重複削除する方法

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】  添付図のとおり、2列×20行の数字が【入力値2列】欄に入っています。  この数字を昇順に並び替えて重複数字を削除したものを【重複チェック済2列】に  出力します。また、【入力値2列】欄の数字を【入力値1列】に縦1列にして数字 を昇順に並び替えて重複数字を削除したものを【重複チェック済1列】に出力しま す。具体的には下記(1)~(4)の手順です。質問は2列×20行での場合ですが、  2列×200行の場合でも上記のことができるようにしたいです。    *********************************** (1)入力値2列(A列・B列)に2つの値をセットします。 (2)入力値2列(A列・B列)の値を重複チェック済2列(D列・E列)に並べて昇順に並び替えて重複数字を削除します。 (3)入力値2列(A列・B列)の値を入力値1列(G列)に1列にセットします。 (4)入力値1列(G列)の値を重複チェック済1列(I列)に並べて昇順に並び替えて重複数字を削除します。 以上、よろしくお願いします。

  • 同じ数字を3個~4個使用している重複行の塗り潰し2

    いつもお世話になっております。 ご存じの方がお見えでしたら回答をよろしくお願い致します。 【質問】  2019/09/29 22:13 に質問No.9662014 として、  『同じ数字を3個~4個使用している重複行の塗り潰し』という質問をさせて  頂きました。その時に、SI299792様とnishi6様から回答を頂きました。  この時の質問は5列×20行でしたが、  今回は添付図のとおり、7列×30行に増やした場合の改造の仕方を  知りたく質問させていただきます。その他条件は前回の質問(質問No.9662014  と同じです。 以上、よろしくお願いします。  

  • 同じ数字を3個~4個使用している重複行の塗り潰し

    いつもお世話になっております。 ご存じの方がお見えでしたら回答をよろしくお願い致します。 【質問】  添付図の様にA行~T行の第一数字から第五数字まで1から31の数字が重複して 入っています。(1行だけで見れば重複はしておらず、第一数字から昇順に第五数 字まで並んでいます。)初めにA行からB行~T行を1行ずつ見ていき、  A行の5つの数字のうち3個~4個同じ数字を使用している行があればどちらの行  の数字も黄色に塗り潰す、次にB行からC行~T行を1行ずつ見ていき・・・  と、最後はS行からT行を見るまでを繰り返し、5つの数字のうち3個~4個  同じ数字を使用している行があればどちらの行の数字も黄色に塗りつぶす方法が  知りたいです。  ◎添付図の結果として黄色に塗り潰される行は   (1)A行とG行・・・2、7、19、23が重複   (2)B行とH行・・・3、6、14,22が重複   (3)C行とI行・・・4,15、17,21が重複   (4)D行とJ行・・・8、9、18、25が重複   (5)M行とQ行・・・12,14、23,28が重複   (6)N行とS行・・・5,19,31が重複   (7)O行とT行・・・1,6,21が重複 【注意事項】   ・使用するエクセルは2016です。   ・A行~T行に入る数字は毎回異なります。    但し使用数字は1~31で、1行でみれば重複無しで左から昇順です。   ・3個~4個の数字が重複する行が存在しないことはありません。 以上、よろしくお願いします。

  • エクセルで重複行をすべて削除するにはどうすればよいでしょうか?

    例えば、昇順で並べ替えて以下のようにエクセルで準備したとします。   A列 1行 aa 2行 aa 3行 bb 4行 bb 5行 cc 6行 cc 7行 dd 8行 ee そこで重複する行ごと削除したいのですがどうすればよいでしょうか? 削除結果は   A列 1行 dd 2行 ee 上記のようにしたいです。 重複する1行だけは削除できたのですが、 2行ごと削除の方法がわかりません。 ご教授いただきたく存じます。 よろしくお願いいたします。

  • 重複数字を除いて数字を表示する方法。

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  A列~U列に数字が左から右に昇順で入っています。(数字は重複があります)   V列以降に重複を除いた数字を表示する方法が知りたいです。 ●実行前 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38 38 39 42 2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38 38 39                           :                           : ●実行結果(Z列以降に重複した数字を除いた数字を表示する。) A列~U列の数字:1 4 6 10 16 19  21 24 25 27 29 30 33 35 38 39 42 A列~U列の数字:2 3 5 6  7  9  10 13 14 18 21 23 27 28 31 32 33 39 41 42 A列~U列の数字:3 4 5 6  9  11 12 17 18 19 20 24 25 26 28 34 36 37 38 39                              :                           : ●注意事項  ・使用するエクセルは2010です。  ・A~U列に入る数字は、1~43です。 以上、よろしくお願いします。

  • 重複数字を数えて出力する方法

    どなたたかご存知でしたらご回答宜しくお願い致します。 【質問】  下図の様にA1~E5迄の25個のセルに数字が1~31迄重複して入っています。  重複数字を数えて、4個重複から重複無しまで【重複チェック】に該当する数字  を出力する方法が知りたいです。 【例】       【重複チェック】 07 12 14 18 19   4個重複:7 01 03 07 19 28   3個重複:19 02 03 07 13 31   2個重複:3,14 07 14 19 20 26   重複無し:1,2,12,13,18,20,26,28,31 ◆注意事項  ・2個重複~4個重複のいずれかが0個という事はあり得ます。  ・【例】で書いてある数字は見やすくするため2桁で書いてあります。    (1ではなく、01としてあります。)  ・使用するエクセルは2010です。 以上、よろしくお願いします。

  • 重複数字を除いて数字の数をカウントする方法。

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  A列~U列に数字が左から右に昇順で入っています。(数字は重複があります)  V列に重複した数字を除いた数字の数のカウント合計を表示する。 ●実行前 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38 38 39 42 2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38 38 39                           :                           : ●実行結果(A~Uの重複した数字を除いた数字の数のカウント合計をV列に表示する。) 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38 38 39 42 17<-17個の数字  2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42  20<-20個の数字 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38 38 39 20<-20個の数字                           :                           : ●注意事項  ・使用するエクセルは2010です。  ・A~U列に入る数字は、1~43です。 以上、よろしくお願いします。

  • 1行複数列の中にある重複数字を削除する方法

    どなたかご存じでしたらご回答よろしくお願いします。 【質問】  エクセルシートA列~F列に1~31迄の数字が順不同に入っています。  これをG列~L列に「重複数字は1つにして昇順に並べる」方法が知りたいです。 ●エクセルシート  A  B  C  D  E   F  G  H  I  J  K  L   4  14  20  19  4  19  4  14  19  20 ←重複数字は1つになる。    15  5  9            5   9   15  6  12  12  24        6   12  24    ←重複数字は1つになる。   4  26  8   6        4   6   8  26  ●注意事項   ・使用するエクセルは2010です。 以上、よろしくお願いします。

専門家に質問してみよう