我正在处理一些体育数据,并尝试将比赛信息动态地提取到另一个 Excel 工作表中。我创建了一个 Excel 公式,它主要完成我想要的功能,但我想看看是否可以稍微改变一下行为。这是一些数据的屏幕截图,然后我将解释我想要实现的目标。
第一个屏幕截图是我正在使用的一些数据的小样本。我将空军以粗体显示,因为这是我将用于数据提取的示例团队。
这是我将数据提取到 Excel 的另一张工作表上的位置。左边的表格是我当前得到的结果,但右边的表格是我想要实现的表格格式。单元格 A1 仅用于与“时间表”表进行比较。
这是我目前使用的公式:
=IFERROR(INDEX(Schedule!$A$1:$I$866,MATCH((AGGREGATE(15,3,((Schedule!$F$1:$I$866=$A$1)/(Schedule!$F$1:$I$866=$A$1)*ROW(Schedule!$F$2:$I$866))-ROW(Schedule!$F$1),ROWS($O$2:O2)))-1,Schedule!$A:$A,0),COLUMN(B$1)),"")
因此,我知道要使第二个表成为可能,需要进行的更改是我创建的 IF 语句,然后仅当 IF 语句为真时,才对 AGGREGATE 公式的 [k] 值进行增量。
这是我为 IF 语句所做的逻辑:
=IF(XLOOKUP(1,((Schedule!$B$2:$B$30=$I9)*((Schedule!$F$2:$F$30=$A$1)+(Schedule!$G$2:$G$30=$A$1))),Schedule!$B$2:$B$30,"")=$I9,*PULL THE DATA*,*LEAVE DATA BLANK*)
因此当前使用的 [k] 增量值是 ROWS($O$2:O2) ,它工作正常,但由于“空军”在第 3 周期间不存在,因此只会拉出下一个可用的值,即第 4 周。
如何在实际运行公式时保留一个加 1 的更静态的值?
我已将公式更改为这样,这样我就可以拥有静态周数,然后从日期而不是每周开始拉取:
=IF(XLOOKUP(1,((Schedule!$B$2:$B$30=$I9)*((Schedule!$F$2:$F$30=$A$1)+(Schedule!$G$2:$G$30=$A$1))),Schedule!$B$2:$B$30,"")=$I9,IFERROR(INDEX(Schedule!$A$1:$I$30,MATCH((AGGREGATE(15,3,((Schedule!$F$1:$I$30=$A$1)/(Schedule!$F$1:$I$30=$A$1)*ROW(Schedule!$F$2:$I$30))-ROW(Schedule!$F$1),ROWS($O$2:O2)))-1,Schedule!$A:$A,0),COLUMN(C$1)),""),"")
因此,当第 3 周到来时,由于第 3 周不会提取任何数据,因此我需要 AGGREGATE 函数的 [k] 值不增加。
也许我的处理方式是错误的,但这就是我能够足够接近数据提取的最终目标的方法。
如有任何帮助,我们将不胜感激。谢谢。
假设:
A.) 您想要返回单个球队的完整赛程表(主场和客场比赛)。
B.) “再见”周应该显示空白行。
由于赛季的周数已知,请设置查找表并填写 WK 列:
=SEQUENCE(18)
在查找公式中,将
lookup_value
参数设置为 WK 和团队名称的串联。我们将嵌套 XLOOKUP()
公式,以便如果 WK 不存在 AWAY 游戏,则另一个 XLOOKUP()
将在 HOME 列中查找 WK 和球队名称的串联,否则返回空字符串。
在我的工作簿中,我将包含完整时间表的工作表命名为
MasterSchedule
,将标准团队的时间表命名为 TeamSchedule
。我已在单元格 lookup_value
中找到了团队 TeamSchedule!$I$2
(当前设置为 Air Force
)。
使用
TeamSchedule!$A2:$19
中的 =SEQUENCE(18)
填写赛季的周周数据 TeamSchedule!$I$2
,在 TeamSchedule!B2
中输入以下公式并将其向下拖动到 TeamSchedule!B19
:
=XLOOKUP($A2&$I$2,MasterSchedule!$B$2:$B$30&MasterSchedule!$F$2:$F$30,MasterSchedule!$C$2:$G$30,
XLOOKUP($A2&$I$2,MasterSchedule!$B$2:$B$30&MasterSchedule!$G$2:$G$30,MasterSchedule!$C$2:$G$30,"",0)
,0)