- ベストアンサー
Excel初心者が数字を左側から順に並び変える方法とは?
- Excelの初心者が横一列に重複した数字の並びを左側から順に整理する方法を教えてください。
- Excelの初心者が複数のセルに散らばった数字を左側から一列に並び変える方法を知りたいです。
- Excelの初心者が同じ数字を無視して左側からセルの内容を整理する方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 ワークシート関数では出来ない事は無いが非常に厳しいと思いますのでマクロでは駄目でしょうか。 データをSheet1、並び替えをSheet2としています。 (1)Sheet1タブ上で右クリック→コードの表示→以下のサンプルコードを貼り付け→F5キー押下 (2)サンプルコード Sub sample() Sheets("sheet2").Cells.ClearContents For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row Set Db = CreateObject("Scripting.Dictionary") For i = 1 To Cells(j, Columns.Count).End(xlToLeft).Column Db(Cells(j, i).Value) = 1 Next wk = Db.keys For i = 0 To Db.Count - 1 Sheets("sheet2").Cells(j, i + 1).Value = wk(i) Next Next End Sub
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
どのような目的で重複のない数字を表示したいのかわかりませんが、単純に表示するだけで良いなら(この数字を計算などに使用しないなら)以下の数式を入力し、右方向にオートフィルコピーしてください(1行目のA列からZ列の重複のない数字を表示する場合)。 =INDEX(1:1,SMALL(INDEX((MATCH($A1:$Z1&"",$A1:$Z1&"",0)<>COLUMN($A1:$Z1))*100+COLUMN($A1:$Z1),),COLUMN(A1)))&"" なお、表示する数字を小さい順に並べたい場合は、別の数式を利用する必要があります。
お礼
丁寧な、ご回答ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元データがSheet1のA1セルから始まっていて、並べ替えた結果をSheet2に表示するものとします。 又、Sheet3を作業用のシートとして使用するものとします。 まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(COUNTIF(INDEX(Sheet1!1:1,1):INDEX(Sheet1!1:1,COLUMN()),INDEX(Sheet1!1:1,COLUMN()))=1,COLUMN(),"") 次に、Sheet3のA1セルをコピーして、Sheet3のA1セルよりも右側にあるセルに貼り付けて下さい。 次に、Sheet3の1行目全体をコピーして、2行目以下に貼り付けて下さい。 次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(COLUMNS($A$1:A$6)>COUNT(Sheet3!1:1),"",INDEX(Sheet1!1:1,SMALL(Sheet3!1:1,COLUMNS($A$1:A$6)))) 次に、Sheet2のA1セルをコピーして、Sheet3のA1セルよりも右側にあるセルに貼り付けて下さい。 次に、Sheet2の1行目全体をコピーして、2行目以下に貼り付けて下さい。 以上です。
お礼
丁寧な、ご回答ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! VBAになってしまいますが・・・ 一例です。 データはSheetの1行目からあるとします。 画面左下にあるSheet見出し(Shee1・Sheet2・・・)の部分の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です。) Sub test() 'この行から Dim i, j As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = Cells(i, Columns.Count).End(xlToLeft).Column To 2 Step -1 If WorksheetFunction.CountIf(Range(Cells(i, 1), Cells(i, j)), Cells(i, j)) > 1 Then Cells(i, j).Delete (xlToLeft) End If Next j Next i End Sub 'この行まで ※ 尚、一旦マクロを実行すると元に戻せませんので、別Sheetで試してみてください。m(__)m
お礼
初めてVBAをしようしました。 ご回答ありがとうございました。
お礼
別シートに作成できました。 早速、使用させて頂きます。 ありがとうございました。