0

「テキスト」の最後の一致のデータの値を返す数式が必要です。行番号も受け入れられます。マクロは受け入れられません。名前列はソートされておらず、ソートできません!列「名前」のみがルックアップ値として使用されます。配列数式の代わりに、複数のヘルパー列を使用したいと思います。

Row Name    Data
1   Joe     10
2   Tom     20
3   Eva     30
4   Adam    40
5   Tom     21

LARGEは数値でのみ機能し、VLOOKUPは最初の一致のみを返します。LOOKUPはたまにしか機能しないので、それも機能します。

したがって、「トム」の最後の一致が必要な場合は、「21」を返す必要があります。

4

4 に答える 4

1

ヘルパー列を使用すると、配列数式を回避できます。F1 に一致する名前 (Tom など) があるとします。ヘルパー列の行 C2 に次のように入力します。

=IF(A2<>$F$1,0,row())

次に、数式をデータに沿ってコピーします。

これで、列 C には、一致しない名前の場合は 0 が含まれ、一致した名前の場合は行番号が含まれます。列を最大化すると、ソリューションの行が得られます。関数 offset で正しいオフセットを使用するだけで、結果は簡単になります。

=OFFSET(B1,max(C:C)-1,0)

PS: 私の Excel のコピーはイタリア語なので、数式のこの英語の翻訳をテストすることはできません。

于 2010-01-30T23:35:29.027 に答える
0

配列数式を使用して列を作成します(Ctrl + Shift + Enterで入力します)。

=VLOOKUP(MAX(IF($B$2:$B$6=B2, $A$2:A$6, 0)), $A$2:$C$6, 3, FALSE)

正しく実行したことを確認するには、セルをクリックすると、数式が中括弧({})で囲まれて表示されます。

注:これは、「行」がA1にあることを前提としています。

于 2009-05-31T17:35:09.560 に答える
0

私は解決策を思いつきましたが、そのように Data の数値が並行している必要があります

Name        Data
Joe         1
Tom         1
Eva         1
Adam        1
Tom         2
Tom         3
Eva         2

とにかく、私のデータはそのように見えるので、それは大丈夫です。そのため、名前が以前に使用されている場合は、古い最高の +1 別名コンカレントである必要があります。

Name は A1、Data は B1 で、この式は C2 に入ります。

FLOOR(SQRT(2*SUMIF(A2:A7,A2,B2:B7)),1)
于 2009-05-31T20:57:42.123 に答える