Excelの数式を使用してリスト内のアイテムの最後の出現を見つける方法

Excelの数式を使用してリスト内のアイテムの最後の出現を見つける方法

概要:このチュートリアルでは、Excelの数式を使用して、リスト内のアイテムの最後の出現箇所を見つける方法を学習します。

最近、私は会議の議題に取り組んでいました。

私はExcelに、人々のリストと彼らが「会議の議長」だった日付のリストを持っています。

また、リストに重複があるため、ある人が最後に「会議の議長」になったのはいつかを知る必要があります(つまり、ある人が何度も会議の議長を務めたことがあるということです)。

これは、最新の議長が再配置されないようにする必要があるためです。

そこで、Excel関数の魔法を使って仕事をすることにしました。

以下は最終結果です。ドロップダウンから名前を選択すると、リスト内でその名前が最後に出現した日付が表示されます。

Excelの数式でアイテムの最後の出現を検索します-デモ

Excel関数をよく理解している場合は、これを実行できるExcel関数がないことをご存知でしょう。ここで私たちは奇跡を起こさせます。

このチュートリアルでは、これを行うXNUMXつの方法を紹介します。

最後の出現を見つける-MAX関数を使用

リストの最後の値を返すExcelの数式は次のとおりです。

=INDEX($B$2:$B$14,SUMPRODUCT(MAX(行($A$2:$A$14)*($D$3=$A$2:$A$14))-1))

この式の仕組みは次のとおりです。

  • MAX関数は、最後に一致した名前の行番号を見つけるために使用されます。たとえば、名前がGlenの場合、11行目にあるため、11が返されます。リストは1行目から始まるため、XNUMXが減算されます。したがって、Glenの最後の出現はリストの10です。
  • SUMPRODUCTは配列数式を処理できるため、Control + Shift + Enterを使用する必要がないことを確認するために使用されます。
  • INDEX関数を使用して、最後に一致した名前の日付を検索できるようになりました。
関連する質問  修理-それはうまくいきませんでした。Bluetoothデバイスがまだ検出可能であることを確認して、再試行してください

最後の出現を見つける-LOOKUP関数を使用する

同じ仕事をする別の式は次のとおりです。

=LOOKUP(2,1/($A$2:$A$14=$D$3),$B$2:$B$14)

リスト内の最後のオカレンスを検索-数式を検索

この式の仕組みは次のとおりです。

  • ルックアップ値は2です(理由がわかります。読み続けてください)
  • ルックアップ範囲は1 /($ A $ 2:$ A $ 14 = $ D $ 3)です。一致する名前が見つかった場合は1を返し、それ以外の場合はエラーを返します。したがって、最終的には配列になります。例如,查找值為 Glen,數組將為 {#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/ 0!;#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;#DIV/0!}。
  • XNUMX番目のパラメーター([result_vector])は、結果を与える範囲(この場合は日付)です。

この式が機能する理由は、LOOKUP関数が近似マッチング手法を使用しているためです。つまり、完全に一致するものが見つかった場合は返されますが、見つからなかった場合は、配列全体を最後までスキャンし、ルックアップ値よりも小さい次の最大値を返します。

この場合、ルックアップ値は2であり、配列では1またはエラーが発生します。したがって、配列全体をスキャンして、最後の1の位置(名前に最後に一致する値)を返します。

最後の発生を検索-カスタム関数(VBA)を使用

別の方法もお見せしましょう。

VBAを使用してカスタム関数(ユーザー定義関数とも呼ばれます)を作成できます。

カスタム関数を作成する利点は、使いやすさです。ほとんどの作業はVBAバックエンドで行われるため、毎回複雑な数式を作成することを心配する必要はありません。

簡単な数式を作成しました(VLOOKUP数式によく似ています)。

カスタム関数を作成するには、VBエディターでVBAコードが必要です。コードとそれをVBエディターに取り込む手順については後で説明しますが、最初にどのように機能するかを示します。

関連する質問  Outlook の完全バックアップ: メールを PST ファイルとしてエクスポート

結果を与える式は次のとおりです。

= LastItemLookup($ D $ 3、$ A $ 2:$ B $ 14,2)

リストで最後の発生を検索-カスタム関数のデモ

式はXNUMXつのパラメーターを取ります。

  • 値を見つけます(これはセルD3の名前になります)
  • 範囲を検索します(これは名前と日付の範囲になります– A2:B14)
  • 列番号(これは結果が必要な列です)

数式を作成してVBエディターにコードを配置すると、他の通常のExcelワークシート関数と同じように使用できます。

式のコードは次のとおりです。

関数LastItemLookup(Lookupvalue As String、LookupRange As Range、ColumnNumber As Integer)Dim i As Long For i = LookupRange.Columns(1).Cells.Count To 1 Step -1 If Lookupvalue = LookupRange.Cells(i、1)Then LastItemLookup = LookupRange.Cells(i、ColumnNumber)Exit Function End If Next i End Function

このコードをVBエディターに配置する手順は次のとおりです。

  1. [開発者]タブに移動します。リスト内のアイテムの最後の一致を検索します
  2. VisualBasicオプションをクリックします。これにより、バックエンドでVBエディターが開きます。リスト内のアイテムの最後の出現を検索します-VisualBasic
  3. VBエディターの[プロジェクトエクスプローラー]ペインで、コードを挿入するブック内の任意のオブジェクトを右クリックします。プロジェクトエクスプローラーが表示されない場合は、[表示]タブに移動し、[プロジェクトエクスプローラー]をクリックします。
  4. [挿入]に移動して、[モジュール]をクリックします。これにより、ワークブックのモジュールオブジェクトが挿入されます。モジュールを挿入して、最後に一致する値を見つけます
  5. コードをコピーしてモジュールウィンドウに貼り付けます。
関連する質問  Googleフォトの同期を停止するにはどうすればよいですか?

これで、数式がワークブックのすべてのシートで利用できるようになります。

マクロが含まれているため、ブックを.XLSM形式で保存する必要があることに注意してください。また、この数式を使用するすべてのブックで使用できるようにする場合は、この数式を個人用マクロブックに保存するか、そこからアドインを作成できます。

あ、こんにちは 👋会えて嬉しい。

ニュースレターを購読する、定期的に送信する優れたテクノロジー容認あなたの投稿に

コメントを投稿