在 Excel 中,如何使用函数将未知数量的术语拆分到单独工作表上的不同单元格中?

在 Excel 中,如何使用函数将未知数量的术语拆分到单独工作表上的不同单元格中?

Sheet1 的 K2 包含以下内容: Girl Scouts; camping; camp grounds; children

我需要 Sheet2 获取该信息并将分号之间的每个术语放入各自的单元格中。问题是:术语数量总是未知的。有时是 1 个,有时是 8 个。我无法使用“文本到列”功能执行此操作,因为我需要它更加自动化,因为我在 K2 中有数千行。

上下文:Sheet1 有几列,其中包含人们输入的信息,包括标题、创建者、描述、大小、主题等。输入这些信息的目的是为大量图像创建 IPTC 元数据。但是,我们还决定要 DublinCore 元数据。这意味着我需要将用分号分隔的主题等内容翻译到“主题”列下的几个单元格中。这样,我就可以将其用作 csv 以导入 XML 文档。

原始表格的样本如下: https://i.stack.imgur.com/Q5dF4.png

答案1

有很多方法可以做到这一点。

可能最有效的是一个宏,它只需按一下按钮或使用事件触发器即可解析文本(例如 worksheet_activate,因此当您转到工作表 1 时,该工作表就会被填充。

对于公式,假设最多有 10 个条目:

如果您拥有具有该功能的 Excel 2013+ FILTERXML,则可以使用:

=IFERROR(TRIM(FILTERXML("<t><s>" & SUBSTITUTE(Sheet1!$K2,";","</s><s>") & "</s></t>","//s["&COLUMNS($A:A)&"]")),"")

并向右填充十个单元格。然后向下填充至所需的范围。

如果您使用的是早期版本的 Excel,则可以使用:

=IFERROR(INDEX(TRIM(MID(SUBSTITUTE(Sheet1!$K2,";",REPT(" ",99)),{1;99;198;297;396;495;594;693;792;891;990;1089},99)),COLUMNS($A:A)),"")

答案2

您是否尝试过将文件另存为 csv 或文本文件,然后再次打开并选择冒号作为分隔符?您发布的部分下方的行中是否有任何数据?

如果您只想分隔一行,一种快速而又简单的方法可能是用冒号分隔电子表格并保存到新文件,打开旧文件并将其粘贴回现有行的位置。

如果您仍然需要使用不同的分隔符来分隔其他行,则可以对剩余的行重复该过程,然后将每行集合粘贴回一起。

如果您在下面几行中发布布局示例,那将会很有帮助 - 它们的格式是否都类似?因为可能有更快的方法来实现您想要的功能,但如果不知道现有工作表的布局,就很难给出肯定的答案。

相关内容