• ベストアンサー

エクセルの質問です。

1つのセルに1つずつ数字を入力行って行ったときに 下の行に重複するものを除いて一列に表示させるには どのような関数式にすれば良いでしょうか? 具体的にしたいことは 7 16 11 2 3 7 11 7 16 11 2 3 のようになります。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

問題は解決しましたか? 関数で実現するのは大変ですね。 VBAだと簡単です。 一例を示します。 新しいシートに重複削除した結果が出力されます。 Sub test()  Dim c As Integer  Dim r As Long  ActiveSheet.Copy After:=ActiveSheet  Application.ScreenUpdating = False  For r = 1 To Range("A65536").End(xlUp).Row   For c = Cells(r, "IV").End(xlToLeft).Column To 1 Step -1    If WorksheetFunction.CountIf(Range(r & ":" & r), Cells(r, c).Value) > 1 Then     Cells(r, c).Delete Shift:=xlToLeft    End If   Next c  Next r  Application.ScreenUpdating = True End Sub

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#204879
noname#204879
回答No.3

  A B  C  D E F G 1 7 16 11 2 3 7 11 2 1  1  1 1 1 2  2 3 1  2  3 4 5 4 7 16 11 2 3 A2: =COUNTIF($A1:A1,A1) A3: =IF(A2=1,COLUMN(A1),"") A4: =IF(ISERROR(SMALL(3:3,COLUMN(A1))),"",OFFSET($A1,,SMALL(3:3,COLUMN(A1))-1))

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

作業行を使う代わりに少し判りやすい式のものを出します。 例データB2:I2(A2は数字なしにしておく) 2 3 2 5 2 5 2 1 ーー 目立たない下の表外の行のB列に =IF(COUNTIF($B$2:B2,B2)=1,MAX($A$4:A4)+1,"") これは初出のものに連番を振っています。 B列をI列まで式を複写。 結果 1 2 ー 3 ー ー ー 4 (ーは空白を意味し、OKWAVE画面上で、左に詰められないよう入れたもの) C2に =INDEX($B$2:$I$2,1,MATCH(COLUMN()-1,$B$4:$I$4,0)) と入れて右のほうに式を複写。 結果 2 3 5 1 #N/A $b$4:$i$4の4は、私の場合の例で、実際の、上で説明した初出連番の出ている作業行で置き換えてください。 #N/A!は作業行のMAX数を超えたときは空白を前にかぶせて防止するが 今回略。 このようにこの質問は関数向きではない。 VBAなら素直に簡単なプログラムになる。

すると、全ての回答が全文表示されます。
noname#176215
noname#176215
回答No.1

並ぶ順番に拘らないなら ■A2セル =MIN(1:1) ■B2セル =IF(A2="","",IF(A2=MAX(1:1),"",LARGE(1:1,RANK(A2,1:1)-1))) 右方向にオートフィルコピー 意味はないと思いますが 順番に拘りがあるなら配列計算になります。 ■A2セル =IF(SUM(SIGN(FREQUENCY(1:1,1:1)))<COLUMN(A2),"", INDEX(1:1,256-LARGE(INDEX((MATCH(1:1&"",1:1&"",0)= COLUMN(1:1))*256-COLUMN(1:1),0),COLUMN(A2)))) あんまりお勧めしません。

すると、全ての回答が全文表示されます。

関連するQ&A