• ベストアンサー

Excel(エクセル)同じ値を重複なく抜き出す

4つのセルに数値が入っていて、 横のセルに値を重複なく、1セルに1つずつ抜き出したいです。 作業列は右側どこまで使っても構いません。 UNIQUE関数は利用できません。Excel2013 よろしくお願いします。 6_7_7_3 →6_7_3 7_7_8_7 →7_8 4_7_9_4 →4_7_9

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (777/1627)
回答No.1

データは4列固定、画像のような表でいいですか。 F1: =IFERROR(INDEX(1:1,MATCH(COLUMN()-5,$K1:$N1,0)),"") I1迄コピペ。 K1: =J1+(COUNTIF($A1:A1,A1)=1) N1迄コピペ。 纏めて下へコピペ。 私もExcel2013 です。uniqueが必要な時はOneDriveやグーグルスプレッドシートを使います。 カテゴリはExcel にしておいた方がいいです。

vpztra81
質問者

お礼

ありがとうございます。 できました。

その他の回答 (5)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.6

ワークシート関数は苦手なので VBA で。 Sub Sample() Dim Src_Rng As Range ' A列のデータ範囲 Dim rng As Range Dim i As Long Set Src_Rng = Range(Range("A2"), Cells(Rows.Count, "A").End(xlUp)) Src_Rng.Resize(, 4).Copy Range("F2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False Set rng = Range("F2").Resize(4) For i = 0 To Src_Rng.Rows.Count - 1 rng.Offset(, i).RemoveDuplicates Columns:=1, Header:=xlNo Next Range("F2").Resize(4, Src_Rng.Rows.Count).Copy Range("F2").Offset(, Src_Rng.Rows.Count).PasteSpecial Paste:= _ xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Application.CutCopyMode = False Columns("F:F").Resize(, Src_Rng.Rows.Count).Delete Range("F2").Select End Sub

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

#2です。 ついでに参考に記してみます。 重複のないセルだけデータを残す関数は割合に有名で簡単です(Countif関数以外の関数の組み合わせがないという点で。IF関数を使うのは、常識的で、関数の組み合わせのタイプに当たらないとする。) #2で重複データは空白セルにする関数は挙げた。 さて空白セルを詰めるのが、マル覚えしないと、自分ではすぐには、案出できないだろう。 https://excel-forest.net/2016/07/10/blank-musi/ データの空白セルを無視して上から順に詰めて表示させたい これの「列」データ版を挙げてみる。 A14:I14に、データがあるとする s ー d ー d f ー r p  ーは空白セルを表すとする。 A16に =IFERROR(INDEX($A$14:$I$14,SMALL(IF($A$14:$I$14<>"",COLUMN($A$14:$I$14)),COLUMN(A14))),"") と式を入れて CSE(Shifキー、Ctrlキー、Enterキーを同時押しするもの)。 式をI列まで複写する。 A16:F16 s d d f r p この式は配列数式という、初学者にとって新しいタイプの仕組を使うのが難点。 VBAを使うほかでは、良い方法がないようだ。 応用。 この方法は、これで条件に合ったデータを抜き出す(詰めて)方法で、中間列(行)データを一旦使う(これを嫌がる質問者も多い)が、考えやすい一方法と思う。

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

#2です。 同じ値が同行にあれば空白にする、と言う関数が記述が漏れていました。失礼。 =IF(COUNTIF($A2:A2,A2)=1,A2,"") これを横方向に式複写する。 それで 1 2 3 3 2 1 4 3 2 になる。ここから同行内の、空白セルを除く(左詰め)。これを操作でやったもの。

vpztra81
質問者

お礼

thank you.

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

#2です。補足について。 空白セルを省いて、左詰めする、セルを移動させるようなタイプの課題の関数は難しいから、#2の回答を紹介したのだ。  #1のご回答のようなのをすぐ思い浮べるレベルではないだろうと推測して、操作でやっているのだ。 エクセルの利用は、まず操作でできるなら、それを使う、それが難しい場合は、関数でも難しければVBAでやる。しかしVBAは質問者にはふさわしくないとみて、関数と操作を組み合わせて、すこしやさしくならないか考えたのだ。

vpztra81
質問者

お礼

ありがとうございます。

vpztra81
質問者

補足

ありがとうございます。 >F2:I4は後述する関数の結果(中間状態)です. とありますが、この中間状態へはどういった関数を使うのでしょうか。

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

COUNTIF関数を有効利用することがキーになります。 VBAなどでやる方が考えやすいが、慣れないでしょうから。 既出の回答の、関数の回答は、普通のエクセル使いには、思いつくのが、難しいと思うので、第2の方法です。 例 データ A2:D4 と F2:I4 F2:I4は後述する関数の結果(中間状態)です. 1 2 3 3 1 2 3 3 2 1 2 3 2 1 4 4 3 2 4 3 2 ーーー ここで F2:I4 の範囲で空白セルを削除します。 下記解説の操作で。 https://www.moug.net/tech/exopr/0030089.html 不要な空白セルを一括で削除する その前にF2:I4のセルの関数式を除くため、F2:I4の範囲でコピーしー同じセルに、値貼り付けをします。このステップを省くと下記の該当にフィットしないので。 関数式があると、空白セルでないというみなしになる。 CTRL+G(ジャンプ)ーセル選択ー空白セル選択ー削除ー左詰め。 結果 1 2 3 3 2 1 4 3 2

vpztra81
質問者

お礼

ありがとうございます。 値貼り付けをして空白にしても、空白セルとはみなされないようで、さらに「すべてクリア」を選ぶと空白セルとみなされ、 >CTRL+G(ジャンプ)ーセル選択ー空白セル選択ー削除ー左詰め の手順で出来ました。

vpztra81
質問者

補足

F2:I4 の関数はどうなりますか。

関連するQ&A

専門家に質問してみよう