2つの列のいずれかにテキストが表示される最新の前のレコードから値を取得します。

2つの列のいずれかにテキストが表示される最新の前のレコードから値を取得します。

私は、プールリーグの試合結果について保存しているスプレッドシート内の値と概要データの計算をより完全に自動化しようとしています。

各試合に関する多くの情報を含むテーブルがあり、関連するフィールドは、試合の日付、勝者、勝者の開始ハンディキャップ、勝者の終了ハンディキャップ、敗者、敗者の開始ハンディキャップ、敗者の終了ハンディキャップ、試合開始時間です。

ハンディキャップは、各試合の終了時と次の試合の前に調整されます。プレイヤーの最新の記録 (勝者または敗者) を見つけて、その記録から終了ハンディキャップをコピーし、現在参加している試合の開始ハンディキャップ (勝者または敗者) にコピーするのは面倒です。

彼が勝者または敗者となった最新の記録(1 日に 2 回プレーした場合の最高日付と開始時刻)を見つけ、その後、(それぞれの勝者または敗者から)終了ハンディキャップを取得する数式が必要です。

teylyn の提案に従って、ファイルへの Dropbox リンクをここに示します。関連するタブは Match Results です。https://www.dropbox.com/s/1j9c6zsxjd3q4dt/Sample%20for%20Excel%20Question%20on%20Superuser.xlsx?dl=0

テストのために空白の列 L を追加しました。結果を K の内容と比較して、機能しているかどうかを確認します。そのためにこの列があります。Dropbox に保存したときに削除するのを忘れました。

答え1

問題文

ワークシートには列とに名前がありますEX各行ごとにn, ≠ 。列の名前に対応する番号が列 にあり、列 の名前に対応する番号が列 にあります。最初の行 (行 42 とします) 以降の行については、可能であれば、前の行の およびの値を取得します。EnXnMEAGXK42AF42

  • が「John」の場合E42、「John」を含む最新の行(列EまたはX)を検索します。その行をn. = “John” の場合は、に等しく設定します。 . = “John” の場合は、に等しく設定します。EnK42MnXnK42AGn
  • が「Scott」の場合X42、「Scott」を含む最新の行(列EまたはX)を検索します。その行をn. = “Scott” の場合は、に等しく設定します。 . = “Scott” の場合は、に等しく設定します。EnAF42MnXnAF42AGn

                   

解決

ある程度の健全性を保つために、補助列を使用しましょう。たとえば、ARと ですAS。サンプルファイルのように、データは行2から始まると仮定します。次のように入力します。

=MAX(($E$2:$E2=$E3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$E3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))

AR3(をスキップしますAR2)。Ctrl+ Shift+で終了してEnter配列数式にします。同様にAS3に設定します。

=MAX(($E$2:$E2=$X3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$X3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))

配列数式として。(これは と同じですが、AR3 の 2 つの出現が$E3に置き換えられています$X3。)

K3に設定

=IF($AR3=0, "?", INDEX($A$1:$BG$999, INT($AR3/100), MOD($AR3,100)))

そしてAF3

=IF($AS3=0, "?", INDEX($A$1:$BG$999, INT($AS3/100), MOD($AS3,100)))

$AR3(配列数式としてではありません)。これらは、 の 3 つの出現が に置き換えられていることを除いて同じです$AS3

そして、もちろん、下にドラッグ/塗りつぶします。

ヘルパー列は、名前の最新の出現を検索します。つまり、 の最新の出現を検索し、 の最新の出現を検索します。基本的には、前の行全体での最大値を検索することによって検索します。ARnEnASnXn

前の値=この値) * 行())

つまり、名前が一致する行の最も高い番号です。次に、名前が見つかった場所を次のようにエンコードします。

100*行() + 列()コピーしたいデータ

E両方の数式は列とセルの両方を調べX、対応する列MまたはAGセルのエンコードされた座標を返します。次に、KおよびAF数式はセル アドレスをデコードして値を取得します。

               

213 も同様AR6です。なぜなら、「John」( E6) は行 2 に最後に表示され、E2( ではなく) に表示されたため、列 13 (列)X2から値をコピーしたいからです。M

関連情報