仅当名称符合 YYYY-MM 格式时才从工作表复制数据

仅当名称符合 YYYY-MM 格式时才从工作表复制数据

我正在尝试整合来自多个文件和工作表的数据(11 个文件,每个文件约 50 个工作表)。将数据复制到不同的工作表中可以正常工作,但我想只从符合“YYYY-MM”格式的工作表中读取/复制数据,而不从具有不同名称的工作表中读取/复制数据(例如 table1 等)。

我知道工作表的名称是一个字符串,但如何才能使其符合要求?我考虑过使用,len(7)但这也包括任何有 7 个字符的字符串。

非常感谢您的帮助。谢谢

答案1

一种方法是使用公式获取选项卡名称,然后查看是否可以通过向其添加“-01”并将其用作输入来生成日期DATEVALUE,然后使用TEXT该结果更改为“YYYY-MM”形式并将该结果与您获得的选项卡名称进行比较。

听起来很多,但下面可以做到,而且不太复杂:

=LET(TabName,  RIGHT(CELL("filename",'2022-05'!A1),LEN(CELL("filename",'2022-05'!A1))-FIND("]",CELL("filename",'2022-05'!A1))),

 IF(TabName=TEXT(DATEVALUE(TabName&"-01"),"YYYY-MM"),TRUE,FALSE)
 )

CELL是获取选项卡名称的函数。它生成文件路径和名称以及工作表名称。我使用“old school”FIND等来删除除实际工作表名称之外的所有内容,该名称恰好位于字符串中唯一的“]”字符之后。(使用LEN完整字符串减去该位置来获取实际工作表名称。)

如果您拥有 Excel 提供的最新文本函数,TEXTAFTER只需一小段公式即可轻松完成。

LET以前使用过,因为现在大多数人似乎都有这个功能,而且你没有指出需要容纳旧版本。但LET如果需要或愿意,你可以复制“TabName”的值并将其粘贴进去以删除。

因此,将字符串 TabName 与“-01”连接起来,如果格式正确,则为有效日期。使用它DATEVALUE返回字符串的日期值(注意,如果名称为“Sheeet1”,则可能已经失败,但您不介意失败的位置,如果失败,那么……)。使用其中一个函数将该日期返回到文本字符串中,例如,TEXT但格式为“YYYY-MM”,然后进行简单IF测试以查看它是否与 TabName 匹配。

我为公式提供了一个简单的 TRUE/FALSE 输出,但您可以用任何您喜欢的格式替换其中一个或两个。这里唯一要解决的是定义工作表名称是否是可接受/所需的格式。

相关内容