如何修改ArrayFormula以获取Google Sheets中的最新评论?
问题分析
原公式通过VLOOKUP匹配ID&状态时,会返回首个匹配的历史评论,而非目标ID对应的最新评论——因为VLOOKUP默认返回区域内第一条符合条件的结果,无法自动识别“最新”记录。
公式修改方案
我们需要先对评论数据按时间降序排序(确保最新评论排在对应分组的最前),再进行匹配;或者直接按ID&状态分组提取最新评论,以下是两种可行的修改方案:
方案1:按时间排序后匹配(适用于单ID对应单状态的场景)
=ArrayFormula(IFERROR(FILTER( { VLOOKUP(FILTER(A2:A11,C2:C11=A21),A2:B11, {1,2},FALSE), VLOOKUP(FILTER(A2:A11&B21,C2:C11=A21),{I2:I10&J2:J10,J2:J10,L2:L10-K2:K10},{2,3},FALSE), // 替换原评论匹配逻辑:按时间降序排序后取最新评论 VLOOKUP(FILTER(A2:A11,C2:C11=A21), SORT(E2:F11, 3, FALSE), 2, FALSE) }, VLOOKUP(FILTER(A2:A11&B21,C2:C11=A21), {I2:I10&J2:J10,J2:J10},2,FALSE)=B21 )))
关键说明
SORT(E2:F11, 3, FALSE):假设评论的时间列是第3列(即E2:F11右侧的时间列),按时间降序排序,让最新评论排在对应ID的最上方;如果你的时间列不是第3列,把3改成实际的时间列序号即可。
方案2:按ID&状态分组取最新评论(适用于单ID对应多状态的场景)
如果同一个ID对应不同状态的多条评论,需要按ID&状态分组提取每组的最新评论,可使用SORTN实现:
=ArrayFormula(IFERROR(FILTER( { VLOOKUP(FILTER(A2:A11,C2:C11=A21),A2:B11, {1,2},FALSE), VLOOKUP(FILTER(A2:A11&B21,C2:C11=A21),{I2:I10&J2:J10,J2:J10,L2:L10-K2:K10},{2,3},FALSE), // 按ID&状态分组,保留每组最新的评论 VLOOKUP(FILTER(A2:A11&B21,C2:C11=A21), SORTN(SORT({E2:E11&J2:J10, F2:F11, G2:G11}, 3, FALSE), 9^9, 2, 1, TRUE), 2, FALSE) }, VLOOKUP(FILTER(A2:A11&B21,C2:C11=A21), {I2:I10&J2:J10,J2:J10},2,FALSE)=B21 )))
关键说明
SORT({E2:E11&J2:J10, F2:F11, G2:G11}, 3, FALSE):将ID&状态、评论内容、评论时间组合后,按时间降序排序。SORTN(..., 9^9, 2, 1, TRUE):对排序后的结果按ID&状态分组,仅保留每组的第一条记录(即该分组下的最新评论)。
内容的提问来源于stack exchange,提问作者NidenK
相关产品推荐
相关产品推荐

