我有一个简单的 Excel 表,用于记录每周的销售量。每周都会在前一周的右侧添加新数据。
我在同一工作簿的不同选项卡上有一个摘要表 - 我试图让摘要表在新数据添加到周表后自动更新周摘要。
有没有办法定义一个单元格范围,将其延伸到未来的日期范围,并将最近添加的数据拉入摘要?
答案1
ZivkoK
的评论采用了传统且非常简短的方式。强烈推荐。
它的缺点是,很多人无法立即看出它是如何工作的,这可能导致难以向老板证明该技术的合理性。但除此之外,它很简单,而且占用空间不大。
另一种方法,占用空间大,因此短期内不会赢得“公式高尔夫”,其用途是FILTERXML()
:
=FILTERXML("<Group><Element>"&TEXTJOIN("</Element><Element>",TRUE,A11:AF11)&"</Element></Group>","/Group/Element[last()]")
不过,一个优点是,不仅可以返回最后一个元素,还可以按位置/索引/数字返回任何其他元素。可能是第 4 个,也可能是第 17 个。但由于可以直接寻址最后一个元素,而不需要知道数组总共有多少个元素,因此很容易访问它。
基本上,该函数TEXTJOIN()
会获取行的单元格并将它们组成一个字符串。在本例中,即 A 到 AF 列。前两个参数是分隔符(这里不是简单的逗号,而是您需要的 XML 标签),以及是否包含空单元格(在本例中为“不”)。由于为后者指定了“FALSE”,因此您可以指定可能使用的整个列集,并且该函数会忽略任何实际未使用或尚未使用的列。
然后将前导和滞后标签连接到其输出,以使字符串FILTERXML()
可以识别为 XML 并使用您指定的“XML 路径”进行解析。(使用的标签可以是任何内容,但我使用详细的“Group”和“Element”标签,而不是人们经常使用的“a”和“b”标签,因为我觉得公式提供的中间结果可能对试图跟踪工作的人有用。可能永远都不需要,但它就在那里。)
最后,添加[last()]
到“XML 路径”指示FILTERXML()
仅返回原始TEXTJOIN()
数组的最后一个元素(其中从不包含空单元格值)。
(您正在构建一个包含“[last()]”的字符串FILTERXML()
,并且可以使用字符串构建技术来指定其他元素。因此,假设您想从倒数第二个元素中减去最后一个元素。您可以使用COUNT/COUNTA
并减去 1 来构建该字符串的元素部分。现在您拥有了两者并可以继续前进。这是该LOOKUP()
方法无法轻易做到的。)