エクセルシートで1行複数列の中にある重複数字を削除する方法-質問

このQ&Aのポイント
  • エクセルシートA列~F列に1~31迄の数字が順不同に入っています。これをG列~L列に「重複数字は1つにして昇順に並べる」方法が知りたいです。
  • 質問者はエクセルシートのA列~F列に順不同に1~31までの数字が入っている状況で、「重複数字は1つにして昇順に並べる」方法を知りたいという質問をしています。
  • この質問では、エクセルシート内の1行複数列にある重複数字を削除し、昇順に並べる方法を求めています。
回答を見る
  • ベストアンサー

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です。 以上、よろしくお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 まず、G1セルに次の関数を入力して下さい。 =IF(COUNT($A1:$F1),MIN($A1:$F1),"")  次に、H1セルに次の関数を入力して下さい。 =IF(G1="","",IF(G1=MAX($A1:$F1),"",SMALL($A1:$F1,COUNTIF($A1:$F1,"<="&G1)+1)))  次に、H1セルをコピーして、I1~L1の範囲に貼り付けて下さい。  次に、H1~L1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  これで、G列~L列に、重複部分を除いた数字が昇順に並べ替えた形で表示されます。

moguo4649
質問者

お礼

ご回答ありがとうございました。 教えて頂いた様に入力して 得たい結果がえられました。 ありがとうございました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です。 > For i = 1 To UsedRange.Rows.Count の部分でマクロが止まってしまうということですので・・・。 ※ 前回のコードはA列最終行に空白ばあった場合最終行の取得をA列で判断できないために あのようなコードにしてしまいました。 とりあえず > For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row に変更してみてください。 A列最終行までマクロが走ります。 (途中の行にA列に空白があっても構いません) ※ A列最終行が空白の場合は >For i = 1 To ActiveSheet.UsedRange.Rows.Count としてみてください。 後者は検証していませんので、うまく動かなかったらごめんなさいね。m(_ _)m

moguo4649
質問者

お礼

今度はうまく動きました。 ありがとうございました。

回答No.3

G1 =iferror(small($A1:$F1,small(index(rank($A1:$F1,$A1:$F1,1)+999*(countif(offset($A1,0,0,1,column($A1:$F1)),$A1:$F1)>1),),column(g1)-6)),"") G1 セルをコピーし、G1:L4 のセル範囲に貼り付け。 本当にこのような操作をする必要があるのか?という点を見直してみるのがお勧め。例えば行に並んでいるのを、行列を入れ替えてコピペすることで列に並べ直し、その列内で、昇順で並べ替えを行ってから重複を削るとかのほうが、ずっと簡単。

moguo4649
質問者

お礼

ご回答ありがとうございます。 おっしゃるとおり行列を入れ替えて削除するのが簡単ですね。 今回はそのようなことをせずに並び替える方法が知りたく 質問させて頂きました。

noname#204879
noname#204879
回答No.2

添付図参照 Sheet2!A1: =IF(COUNTIF(Sheet1!$A1:A1,Sheet1!A1),IF(COUNTIF(Sheet1!$A1:A1,Sheet1!A1)>1,"",Sheet1!A1),"") Sheet1!G1: =IF(ISERROR(SMALL(Sheet2!$A1:$F1,COLUMN(A1))),"",SMALL(Sheet2!$A1:$F1,COLUMN(A1)))

moguo4649
質問者

補足

ご回答ありがとうございます。 また実行結果を添付いただきお手数をおかけしました。 添付図を見ましたが、シート1とシート2に分かれている意味がわかりませんでした。 添付図のシート1のA列~F列の内容がG列以降に反映されているので 私の質問の回答があった!と思いましたが、 シート2が登場してその役割が理解できませんでした。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! またまたVBAになってしまいますが・・・ 前回同様、シートモジュールです。 Sub 重複削除() Dim i As Long, j As Long Application.ScreenUpdating = False Range("A:F").Copy Range("G1") For i = 1 To UsedRange.Rows.Count For j = Cells(i, Columns.Count).End(xlToLeft).Column To 7 Step -1 If WorksheetFunction.CountIf(Range(Cells(i, 7), Cells(i, j)), Cells(i, j)) > 1 Then Cells(i, j).Delete shift:=xlToLeft End If Next j Range(Cells(i, 7), Cells(i, 12)).Sort key1:=Cells(i, 7), order1:=xlAscending, _ Header:=xlNo, Orientation:=xlLeftToRight Next i Application.ScreenUpdating = True End Sub ※ 今回も1行目からデータがあるという前提です。m(_ _)m

moguo4649
質問者

補足

早速のご回答ありがとうございます。 早速やってみましたがマクロを実行すると”実行時エラー424”が出ます。 デバッグすると下記部分で止まっています。 > For i = 1 To UsedRange.Rows.Count 実行結果?としては、A列の内容がG列に入っていますが、 重複数字はそのまま重複しており、また昇順には並んでいません。 何が悪いのでしょうか?

関連するQ&A

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

    どなたかご存じでしたらご回答よろしくお願いします。 【質問】  エクセルのA列~E列に0~9迄の任意の数字が1つだけ入っています。  「A列~E列で重複している数字があればF列又はG列にその数字を出力する」  方法が知りたいです。具体的に下記のエクセルシートのとおりです。 ●エクセルシート   A B C D E F G   3 3 1 7 8 3   ←3が2個重複しているので、F列に3が入る。   7 7 7 7 7 7   ←7が5個重複しているので、F列に7が入る。   4 4 4 4 2 4   ←4が4個重複しているので、F列に4が入る。   6 6 6 3 1 6   ←6が3個重複しているので、F列に6が入る。   1 1 8 8 8 1 8 ←1が2個、8が3個重複しているので、F列に1、G列に8が入る。   3 3 2 2 5 3 2 ←3が2個、2が2個重複していうので、F列に3、G列に2が入る。    3 4 5 6 7     ←重複数字は無いため、F列、G列には何も入らない。  ●注意事項   ・使用するエクセルは2010です。 以上、よろしくお願いします。 投稿日時 - 2013-05-04 11:02:06

  • 同じ数字を見つける方法

    どなたかご存じでしたらご回答よろしくお願いします。 【質問】  エクセルシートA列~F列に数字が入っています。  A列の数字がG列~L列迄の数字のいずれかと同じ値の場合、  M列~R列に一致した値を出力する。これをF列まで繰り返し行う方法が知りたいです。  ◎エクセルシート A B C  D E  F  G  H  I  J  K  L  M  N O P Q R    4 19 20  27 28 14  5  15 18 20  23 28  20 28     5  9 15 19 30  9  5  9  18 22  24 25  5  9  <= A列~F列で9が重複     5  7 17  25 27 18  5  14 18 23  29 31  5  18  2  3 5 14 24  9   5  9 16  22  29 30  5  9   6 12 21 24 28 15  4  5  11 20  26 29    6  8 9 21 26  4   4  8  13 19  26 27  4  8  26 ●注意事項   ・”数字”とは1~31迄の数字の事です。   ・A列~F列の数字は重複する場合があります。   ・A列~F列の数字がG列~L列に存在しない場合があります。    その場合のM列~R列は空白です。   ・使用するエクセルは2010です。 以上、よろしくお願いします。

  • 同一数字の重複を”1”としてカウントする方法。

    どなたかご存じでしたらご回答よろしくお願いします。 【質問】  エクセルのA列~E列に0~9迄の任意の数字が1つだけ入っています。  これをF列で「同一数字はいくつ重複しても”1”として数字の数をカウントする方法」  が知りたいです。具体的に下記のエクセルシートのとおりです。 ●エクセルシート   A B C D E F   3 3 1 7  8 4 ←"3"は同一数字で2個重複するが"1個"とみなして、3178の4となる。   7 7 7 7  7 1 ←"7"は同一数字で5個重複するが "1個"とみなして、7の1となる。   4 4 4 4  2 2 ←"4"は同一数字で4個重複するが "1個"とみなして、42の2となる。   6 6 6 3  1 3 ←"6"は同一数字で3個重複するが "1個"とみなして、631の2となる。   1 1 8 8  8 2 ←"1"は同一数字で2個重複、"8"は同一数字で3個重複するがそれぞれ               "1個"とみなして、18の2となる。   3 3 2 2  5 3 ←"3"と"2"は同一数字で2個ずつ重複するがそれぞれ"1個”とみなして                325の3となる。   3 4 5 6  7 5 ← 同一数字の重複は存在しないため、34567の5となる。 ●注意事項   ・使用するエクセルは2010です。 以上、よろしくお願いします。

  • 複数列を1列に表示させて追加する方法。

    どなたかご存じでしたらご回答をお願いします。 エクセルシートのA列~J列に値が入っており、それぞれの最終行に値を追加しております。 【質問】  A列~J列まで値の入ったエクセルシート(各種値)を別エクセルシート(纏め)のA列に  1つに纏め、エクセルシート(各種値)のA列~J列の最終行に追加されるたびに  エクセルシート(纏め)の最終行に追加する方法が知りたいです。 ●エクセルシート(各種値)  A   B  C  D  E  F  G  H   I   J                :  111 222 333 444 555 666 777 888 999 000  123 456 789 112 223 334 445 556 222 778 <= 最終行追加! ●エクセルシート(纏め)  A   :  111  222  333  444  555  666  777  888  999  000  123 <= A列最終行  456 <= B列最終行  789 <= C列最終行  112 <= D列最終行  223 <= E列最終行  334 <= F列最終行  445 <= G列最終行  556 <= H列最終行  222 <= I列最終行  778 <= J列最終行 【注意事項】   ・A列~J列に入っている値には同じ値が入る場合があります。(重複あり)   ・使用するエクセルは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                           :                           : ●実行結果(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列~G1列に数字が入っています。H1列~N5列にも数字が入っています。  A1列~G1列の数字がH1列~N5列の中の数字と一致すれば、H1列~N5列の数字を”赤色”に  変更する方法が知りたいです。尚、A1列~G1列で数字の重複はありませんが、H1列~N5列では  数字に重複があります。 ●質問のイメージ・・・ H1列~N5列にある、5,6,9,21,16,23の色が”赤色”になる。 A B C D E F G  H I  J  K L M  N 5 6 9 13 16 21 23  5 10 11 12 15 19 23                9 12 21 25 26 28 36                1 4  8 27 28 33 35                2 6  8 15 26 36 37                7 16 22 23 32 35 36 ●注意事項   ・使用するエクセルは2010です。 以上、よろしくお願いします。

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

    いつも大変お世話になっております。 どなたかご存じの方がお見えでしたら回答頂けると幸いです。 【質問】  添付図のとおり、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列)に並べて昇順に並び替えて重複数字を削除します。 以上、よろしくお願いします。

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

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  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です。 以上、よろしくお願いします。

  • 同じ数字を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列に並べた後、昇順に並び変えて重複数字を削除する。) 以上、よろしくお願いします。

  • 同じ数字を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」が残っています。 この重複を削除するにはどうすればよいですか? 以上、よろしくお願いします。

専門家に質問してみよう