私は、プールリーグの試合結果について保存しているスプレッドシート内の値と概要データの計算をより完全に自動化しようとしています。
各試合に関する多くの情報を含むテーブルがあり、関連するフィールドは、試合の日付、勝者、勝者の開始ハンディキャップ、勝者の終了ハンディキャップ、敗者、敗者の開始ハンディキャップ、敗者の終了ハンディキャップ、試合開始時間です。
ハンディキャップは、各試合の終了時と次の試合の前に調整されます。プレイヤーの最新の記録 (勝者または敗者) を見つけて、その記録から終了ハンディキャップをコピーし、現在参加している試合の開始ハンディキャップ (勝者または敗者) にコピーするのは面倒です。
彼が勝者または敗者となった最新の記録(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
問題文
ワークシートには列とに名前がありますE
。X
各行ごとにn
, ≠ 。列の名前に対応する番号が列 にあり、列 の名前に対応する番号が列 にあります。最初の行 (行 42 とします) 以降の行については、可能であれば、前の行の およびの値を取得します。En
Xn
M
E
AG
X
K42
AF42
- が「John」の場合
E42
、「John」を含む最新の行(列E
またはX
)を検索します。その行をn
. = “John” の場合は、に等しく設定します。 . = “John” の場合は、に等しく設定します。En
K42
Mn
Xn
K42
AGn
が「Scott」の場合
X42
、「Scott」を含む最新の行(列E
またはX
)を検索します。その行をn
. = “Scott” の場合は、に等しく設定します。 . = “Scott” の場合は、に等しく設定します。En
AF42
Mn
Xn
AF42
AGn
解決
ある程度の健全性を保つために、補助列を使用しましょう。たとえば、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
。
そして、もちろん、下にドラッグ/塗りつぶします。
ヘルパー列は、名前の最新の出現を検索します。つまり、 の最新の出現を検索し、 の最新の出現を検索します。基本的には、前の行全体での最大値を検索することによって検索します。ARn
En
ASn
Xn
(前の値=この値) * 行())
つまり、名前が一致する行の最も高い番号です。次に、名前が見つかった場所を次のようにエンコードします。
100*行() + 列()コピーしたいデータ)
E
両方の数式は列とセルの両方を調べX
、対応する列M
またはAG
セルのエンコードされた座標を返します。次に、K
およびAF
数式はセル アドレスをデコードして値を取得します。
213 も同様AR6
です。なぜなら、「John」( E6
) は行 2 に最後に表示され、E2
( ではなく) に表示されたため、列 13 (列)X2
から値をコピーしたいからです。M