從最近的前一筆記錄中取得一個值,其中一些文字出現在兩列中的任一列中

從最近的前一筆記錄中取得一個值,其中一些文字出現在兩列中的任一列中

我正在嘗試更完全地自動化計算電子表格中的值和匯總數據,我保存了有關池聯賽比賽結果的電子表格。

我有一個表格,其中包含有關每場比賽的大量信息,相關字段為:比賽日期、獲勝者、獲勝者開始讓分、獲勝者結束讓分、失敗者、失敗者開始讓分、失敗者結束讓分、比賽開始時間。

讓分在每場比賽結束時和下一場比賽前進行調整。找到一名球員最近的過去記錄(可能是贏家或輸家)並將他的最終讓分從該記錄複製到我現在輸入的起始讓分(贏家或輸家)是一件痛苦的事情。

我想要一個公式,可以找到他是贏家或輸家的最新記錄(最高日期和開始時間,如果他一天玩兩次),然後得到最終的讓分(來自相應的贏家或輸家) )。

根據 teylyn 的建議,這裡有一個指向該文件的 Dropbox 連結。相關選項卡是比賽結果:https://www.dropbox.com/s/1j9c6zsxjd3q4dt/Sample%20for%20Excel%20Question%20on%20Superuser.xlsx?dl=0

我添加了一個空白列 L 來測試事物,將結果與 K 中的結果進行比較,看看它們是否有效,這就是它存在的原因。當我將其放入 Dropbox 時忘記將其刪除。

答案1

問題陳述

工作表的名稱位於 ColumnsE和中X。對於每一行n,≠ 。 Column 中的數字對應於 Column 中的名稱,而 Column 中的數字對應於 Column 中的名稱。對於第一行之後的任何行(假設第 42 行),如果可能的話,我們希望取得前一行的值。EnXnMEAGXK42AF42

  • 如果E42是“John”,則尋找包含“John”的最新行(在“列”E或“列”中X)。呼叫該行n。如果=“John”,則設定等於。如果=“John”,則設定等於。EnK42MnXnK42AGn
  • 如果X42是“Scott”,則尋找包含“Scott”的最新行(在“列”E或“列”中X)。呼叫該行n。如果=“Scott”,則設定等於。如果=“Scott”,則設定等於。EnAF42MnXnAF42AGn

                   

解決方案

為了保持一些理智,讓我們使用輔助列;假設ARAS。假設(如範例文件所示)資料從第 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 除了兩次出現的$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被替換為 之外,它們是相同的$AS3

當然,向下拖曳/填充。

輔助列尋找最近出現的名稱 — 尋找最近出現的,並 尋找最近出現的— 基本上是透過尋找前幾行中的最大值ARnEnASnXn

前一個值=這個值) * 排())

即名稱匹配的最高行號。然後它將找到名稱的位置編碼為

100*行() + 列(我們想要複製的數據

這兩個公式都會在 ColumnsE和中查找,並傳回對應列或單元X格的編碼座標。然後和公式只需解碼單元格位址並檢索值。MAGKAF

               

213也是如此AR6,因為「John」( E6) 最近出現在第 2 行中,並且由於他出現在E2(而不是X2)中,因此我們希望複製第 13 列 (Column M) 中的值。

相關內容