• ベストアンサー

エクセルの質問です。

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/17068)
回答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

  • エクセルの関数に関する質問ですが

    1セルに数字を1つずつ空白セルも含んで入力した際に 下の行に空白を含まずに横一列に並ばせるには どのような関数にすれば良いでしょうか? 具体的にやりたいことは(□は空白セルになります。) 34□56□7 と入力したら下の行に 34567 のように空白セルを除いて 横一列に表示させたいのです。 どうぞよろしくお願いします。

  • エクセルの関数に関する質問です

    エクセルで 1行目に数字4つ(1列に数字1つずつ)と 2行目に数字4つ入力した際、 1行目と2行目で重複していない数字を それぞれの行の5列目以降に表示させるには どのような関数にすれば良いでしょうか? 具体的に何がしたいというと 例えば 2 4 5 6 3 5 4 7 と入力した場合 2 4 5 6 3 7 3 5 4 7 2 6 と表示させたいのです。 どうぞよろしくお願いします。

  • エクセル関数を使って曜日表示

    エクセルのセル上に左から1~31まで数字を入力しています。 そのしたの行に、曜日を表示したいと思っています。 具体的には、○年○月というところに今の月を入力すれば、数字下のセルに曜日が表示されるものなんですが、関数をどのように使えばいいかわからなくて困ってます。 知っている方がいたら教えてください。

  • エクセル関数の質問

    セルの合計枠にIF関数の式が入っていますが、セルの行を挿入して式をコピーすると、 ーーーーーーという表示がなされ、入力しても数値が反映されません。 原因は何なのか、どうすれば良いのかわかりません。

  • エクセル関数を使いこの様なことができますか?

    こんにちは エクセルのあるセルに数式(又は関数)を入力し、別のセルに数字を入力したら、セルの塗りつぶしの色が設定しておいた色に変わるようなことはできないでしょうか? (例えば、C1には当初は何も入力されておらず、そのC1にある数字を入力するとA1のセルの色が赤に変わるようなことを考えています。なお、色を変えたいセル自身には数字が入力されている場合といない場合と二通りあるため、いずれの場合も対応できるようにしたいのです。 つまり、初期状態では、A列(色を変えたいセル列)には数字が入ったセル、入っていないセルが混在しており、C列(ここに数字が入力されるたびにA列の対応する行のセルの色を変えたい)には何も入力されていない。この状態で、任意のC列のあるセルに数字を入力すると同じ行にあるA列のセルの色を変えたい、ということをしたいのです。) 具体的にA列にどの様な数式を入力すればよいかを教えて下さい。 (或いは、そのようなことをするための式(関数)はA,C以外の列のセルに入れる必要があるかもしれませんが(例えばB列)、それでもかまいません) よろしくお願いします。

  • エクセルの関数です。列に数字が並んでいる表。

    エクセルの関数です。列に数字が並んでいる表。 ある列内のセルにある数字を指定し、その数字から下一列にある数字をすべて選択したような状態でその中の数字の平均値を求める方法はあるのでしょうか? 数値 3210 ※例えば 3211  3212と3215とあるセルに入力したら自動的に3212~3215の平均値の結果が返るような  3333  関数です。 3212 3213 3214 3215 3217 3218 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235

  • エクセルで時間まで含んでいる日付のセルの重複を除いた個数を出したい

    エクセルで時間まで含んでいる日付のセルの重複を除いた個数を出したいのですが B列の行に日付が8/3と言う表示形式でずっと並んでいます。しかしこのセルは日付だけでなく訳あって実際には時間も含んでいます。 標準表示でみると「40028.1234」みたいな感じになっているわけです・・・ それで、B列の行にある日付は重複している日付もあります。それを重複を除いて数えたいのですが・・・ 色々な関数で試したのですがLEN(B3:B100,5)などを入れると使えなくなってしまう関数だったりして結局できませんでした・・・ 表は下記のようになっています。     A   B   C   D ・・・ 3   8/3 4   8/3 5   8/4 6   8/6 7   8/6 8   8/6 9   8/8 ・ ・ ・ 上記の結果を重複を除いて「4」と出したいのですが・・・ 3より上の行には日付とは関係ないものが入力されており 9より下の行にはこれから日々増えていく行があり現時点では未入力です 何行まで増えるかわからないのでB3:B100みたいな感じで指定しておきたいのですが・・・ よろしくお願いします。

  • エクセルを用いた処理について質問です。

    39×39の表があります。 (具体的には、B1セルに1、C1セルに2・・・というようにAN1セルに39の値があり、A2セルに1、A3セルに2・・・というようにA40セルに39の値があります) 次に、表中の一部の箇所に1の数字があります。 (例えば、5列目16行(この場合のセル番地は、F17セル)に1の数字、17列目34行(この場合のセル番地は、R35セル)に1の数字・・・といった感じです) そこで、質問をしたいことが、適当に列、行にある数字1~39の中から3つを選んだときに(例えば5,20,30とします。)3つの数字を含む列、行のセル番地が全て1が付いているかどうか調べたいのです。(この場合はF21セル、U31セル、F31セルのところに全て1がついているかどうかを調べたいです) はじめはindex関数を用いて作業をしようと思いましたが、1~39の組み合わせを全て入力すると約9000にも及んでしまって途方にくれているところです。 いい方法があれば教えていただけるとうれしいです。よろしくお願いします。

  • Excel INDIRECT関数の使い方が分からない

    表という名前のSheetがあります。  A 4 1 5 2  : のように、表SheetのA4から下に連番で、    1~400まで数字がふってあります。 式という名前のSheetが式~式(399)まで、400Sheetあります。 400Sheetある式というSheetには表があり、入力されて文字は違いますが、表の配置は全く同じです。 式  のD6セルには 1。Q9セルには「あいうえお」と入力、 式(1)のD6セルには 2 Q9セルには「かきくけこ」と入力されています。 式Sheetが400枚あるので、D6セルには、400まで数字が連番で入力されています。 表SheetのA4セルが、もし空という前提で、1と入力した場合、式~式(399)までのSheetの中から一致した数字が合った場合、そのSheetのQ9のセルの値を返しなさい‥と関数を入れたいと思い、 「INDIRECT」関数を使用しました。 =INDIRECT("式(" & A4 & ")'!D6"  しかし、何度入力しても、REFと出てしまいます。 この関数を使用するのは初めてで、戸惑っています。 どうかご教授ください。

  • エクセルのVBAに関しての質問です。

    エクセルのVBAに関しての質問です。 あるセルに入力された数字の行から行までを非表示にしたいのです。 例えば、A1に15、B1に30という数字が入っていれば、行15から30を非表示する、という感じです。 よろしくお願いします。

専門家に質問してみよう