上部のテーブルは入力、下部のテーブルは必要な出力のプレビューです。
IDごとに、最も早い日時を見つける必要があります。他の列からの他の情報も必要です (下の画像を参照してください)。
私の現在の解決策は次のとおりです。セルE2=A2
セルE3でドラッグダウン=IF(E2<>A3,IF(E1=A3,"",A3),"")
セル F2 で下にドラッグ=IF(E2<>"",MIN(IF($A$2:$A$14=E2,$C$2:$C$14)),"")
Ctrl+Shift+Enter
上部のテーブルは入力、下部のテーブルは必要な出力のプレビューです。
IDごとに、最も早い日時を見つける必要があります。他の列からの他の情報も必要です (下の画像を参照してください)。
私の現在の解決策は次のとおりです。セルE2=A2
セルE3でドラッグダウン=IF(E2<>A3,IF(E1=A3,"",A3),"")
セル F2 で下にドラッグ=IF(E2<>"",MIN(IF($A$2:$A$14=E2,$C$2:$C$14)),"")
Ctrl+Shift+Enter
中間計算なしのもう 1 つのオプション:
E2
E2:E14
=IFERROR(INDEX($A$2:$A$14,SMALL(IF(MATCH($A$2:$A$14,$A$2:$A$14,0)=ROW(INDIRECT("1:"&ROWS($A$2:$A$14))),MATCH($A$2:$A$14,$A$2:$A$14,0),""),ROW(INDIRECT("1:"&ROWS($A$2:$A$14))))),"")
CTRLSHIFTENTERENTER{}
F2
(ID2): =IF(E2="","",SUMPRODUCT(--(E2=$A$2:$A$14),--(G2=$C$2:$C$14),$B$2:$B$14))
- 通常の式。G2
(最小日付):通常の代わりに+ +=IF(E2="","",MIN(IF(E2=$A$2:$A$14,$C$2:$C$14,2^100)))
を押します。これにより、 ARRAY式が定義され、中かっこで囲まれます (ただし、手動で入力しないでください!)。CTRLSHIFTENTERENTER{}
H2
(InCh): =IF(E2="","",INDEX($D$2:$D$14,SUMPRODUCT(--(E2=$A$2:$A$14),--(F2=$B$2:$B$14),--(G2=$C$2:$C$14),ROW(INDIRECT("1:"&ROWS($D$2:$D$14))))))
- 通常の数式。備考:
ID
を使用して他のデータ列を参照しますOFFSET
。1...3
。Min Date
と同じようにフォーマットする必要があります。Date
サンプル ファイル: https://www.dropbox.com/s/d2098updfh8djnf/MinDateIDs.xlsx
これはかなりの挑戦です...うまくいくアプローチを見つけたと思います。わかりやすくするために、いくつかのヘルパー列を使用しました。また、名前付き範囲は使用しませんでしたが、列と行の表示に固執しました。あなたはそれを変更したいかもしれません。
次のようになります。
関連する列にズームインします。
列F
には、重複を除外するための配列式が含まれています。ここ で アプローチ を 説明 します. 私が使用した式F2
は
=INDEX($A$2:$A$14, MATCH(MIN(IF(COUNTIF($F$1:F1,$A$2:$A$14)=0, 1, MAX((COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1)*2))*(COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1)), COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1, 0))
Ctrl--を使用して、配列式として確認しますShift。Enterこれを下にドラッグするか、列にコピーしますF
。次に、列G
およびH
には、重複ID
値の開始インデックスと終了インデックスが含まれます。この回答は役に立ちました。賛成票を投じてください:-)。使用される 2 つの式は次のとおりです。
=MATCH(2,1/FREQUENCY($F2,$A$2:$A$14))
、G2
および
=FREQUENCY($A$2:$A$14,$F2)
でH2
。もう一度、それらを下にドラッグして、列全体を埋めます。次の列I
は、明確化のためのものであり、サニティ チェックのためのものです。各サブ配列からの必要な最小日付が含まれています。列J
はその式を に代入してMATCH
、目的の日付の実際のインデックスを見つけます。
=MIN(OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1))
I2
と_
=$G2-1+MATCH(2,1/FREQUENCY(MIN(OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1)), OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1))
でJ2
。最後に、 columnsL
およびM
indexN
を介して元のデータ セットに挿入します。
=INDEX(B$2:B$14,$J2)
でL2
、水平方向にドラッグしてから垂直方向にドラッグできます。
完了したら、ヘルパー列を非表示にするか、すべてを大きな数式に折りたたむことができます。頑張ってください...これを達成するためのより簡単な方法があるかもしれませんが、私はそれを見つけられませんでした.
G の列 D の値が必要な場合、列 C の値が一意であると仮定すると、VLOOKUP を使用できます。つまり、G2 でコピーされます。
=VLOOKUP(F2,C$2:D$14,2,0)
あなたの写真によると、それらはすべて同じシートにあります。ID
、次にDate
(昇順)でソートするだけです。ID
列を下っていくにつれて、変化するたびに、その特定ID
の最小値を持つ行が見つかったことがわかります。変更が発生した場所を示す追加の列を作成し、それらの行をフィルター処理します (必要に応じて列を非表示にします)。Date
ID
ID
そして...出来上がり。
このリンクは古いことを知っておいてください。しかし、もっと短くて簡単な方法があります。=GETPIVOTDATA()
Minimum as field 設定を使用してピボット テーブルを使用してから、情報を取得するにはどうすればよいでしょうか。これらの式のように、はるかに簡単に思えます!