5

上部のテーブルは入力、下部のテーブルは必要な出力のプレビューです。

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

ここに画像の説明を入力

4

6 に答える 6

8

中間計算なしのもう 1 つのオプション:

  1. ID が配置されている最初の行から最後の行までの範囲全体を 選択します - サンプルの場合は行 14 なので、範囲を選択します:通常の代わりに+ +を押します - これにより、マルチセル ARRAY式が定義され、その周りに中括弧が作成されます。 (ただし、手動で入力しないでください!)。E2E2: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{}
  2. F2(ID2): =IF(E2="","",SUMPRODUCT(--(E2=$A$2:$A$14),--(G2=$C$2:$C$14),$B$2:$B$14))- 通常の式。
  3. G2(最小日付):通常の代わりに+ +=IF(E2="","",MIN(IF(E2=$A$2:$A$14,$C$2:$C$14,2^100)))を押します。これにより、 ARRAY式が定義され、中かっこで囲まれます (ただし、手動で入力しないでください!)。CTRLSHIFTENTERENTER{}
  4. 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
  • ID2 の値は、ID のサンプルにあるため、一意ではない場合があります1...3
  • の結果セットは、ソース行Min Dateと同じようにフォーマットする必要があります。Date
  • ソリューションの重要な式 - 空の行のない一意の ID を返すマルチセル モンスターです - OP が要求したように)

サンプル ファイル: https://www.dropbox.com/s/d2098updfh8djnf/MinDateIDs.xlsx

于 2013-03-01T18:06:32.343 に答える
2

これはかなりの挑戦です...うまくいくアプローチを見つけたと思います。わかりやすくするために、いくつかのヘルパー列を使用しました。また、名前付き範囲は使用しませんでしたが、列と行の表示に固執しました。あなたはそれを変更したいかもしれません。

次のようになります。

ヘルパー列を含む XLS のスクリーンショット

関連する列にズームインします。

新しく挿入された列のスクリーンショット

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--を使用して、配列式として確認しますShiftEnterこれを下にドラッグするか、列にコピーします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およびMindexNを介して元のデータ セットに挿入します。

=INDEX(B$2:B$14,$J2)

L2、水平方向にドラッグしてから垂直方向にドラッグできます。

完了したら、ヘルパー列を非表示にするか、すべてを大きな数式に折りたたむことができます。頑張ってください...これを達成するためのより簡単な方法があるかもしれませんが、私はそれを見つけられませんでした.

于 2013-03-01T12:31:57.207 に答える
1

G の列 D の値が必要な場合、列 C の値が一意であると仮定すると、VLOOKUP を使用できます。つまり、G2 でコピーされます。

=VLOOKUP(F2,C$2:D$14,2,0)

于 2013-02-28T21:24:18.203 に答える
0

あなたの写真によると、それらはすべて同じシートにあります。ID、次にDate(昇順)でソートするだけです。ID列を下っていくにつれて、変化するたびに、その特定IDの最小値を持つ行が見つかったことがわかります。変更が発生した場所を示す追加の列を作成し、それらの行をフィルター処理します (必要に応じて列を非表示にします)。DateIDID

そして...出来上がり。

于 2013-02-28T20:53:26.660 に答える
0

このリンクは古いことを知っておいてください。しかし、もっと短くて簡単な方法があります。=GETPIVOTDATA()Minimum as field 設定を使用してピボット テーブルを使用してから、情報を取得するにはどうすればよいでしょうか。これらの式のように、はるかに簡単に思えます!

于 2014-07-21T19:48:48.007 に答える