カークはExcelに大きなデータテーブルを持っています。各行には、車両番号、日付(表はこの列でソートされています)、開始マイレージ、および終了マイレージがあります。彼は、データテーブルを逆方向​​に検索して、現在の行の開始マイレージと同じ車両番号の終了マイレージを見つけたいと考えています。VLOOKUPと似ていますが、上から下ではなく下から上を見てください。

数式を使用してこれにアプローチする方法はいくつかあります。この例では、車両番号が列Aにあり、日付が列Bにあり、開始マイレージが列Cにあり、終了マイレージが列Dにあると仮定します。

必要なのは、現在の車両の最新の終了マイレージを検索する列Cに入力できる式です。次の式は1つのアプローチを提供します。セルC3に配置する必要があります:

=LOOKUP(2,1/FIND(A3,A$2:A2,1),D$2:D2)

必要な限り、数式を列の下にコピーできます。列Aの車両番号がデータテーブルの前に表示されていない場合、数式は#VALUE!などのエラーを返します。または#N / A。その場合、車両に使用する開始マイレージを使用して数式を簡単に入力できます。

別の数式によるアプローチがありますが、これは配列数式として入力する必要があります(Ctrl + Shift + Enterを押します):

=IF(A3="","",MAX(IF(($A$2:A2=A3)*($D$2:D2),$D$2:D2)))

もう一度、数式をセルC3に配置し、必要なだけコピーします。

車両がデータテーブルの前に表示されていない場合、これはエラー値を返しません。値0が返されます。次に、その車両の実際の開始走行距離を数式に入力できます。次の配列数式も使用できます:

=IF(A3="","",INDIRECT("D"&LARGE(($A$2:A3=A3)*ROW($2:3),2)))

この配列数式との違いは、車両がデータテーブルの前に表示されていない場合、#REF!を返すことです。エラー。

C3で使用できるさらに短い2つの配列数式を次に示します(また、必要に応じてコピーします)。

=MAX((D$2:D2)*(--(A$2:A2=A3)))

=MAX(IF(A$2:A2=A3,D$2:D2))

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11744)は、Microsoft Excel 97、2000、2002、および2003に適用されます。

Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります: