我从数据库管理器收到一个 .csv 文件形式的数据包。我将这些数据导入 Excel 进行格式化和排序。但是,有一列包含三条信息,我想对其进行解析和排序。此列中的一个单元格包含一个用户 ID 号和一个用户名(例如:“83920 - johndavis”),我希望能够根据这些术语对这一列进行排序。使用 Excel 中的宏可以实现这一点吗?还是我应该使用 VBA?如果可以,您建议如何解决这个问题?
我有 C 和 Python 背景,因此尽管 VBA 知识有限,但我拥有计算机科学经验。
以下是我在试验解决方案时收集的一些信息。此页面是我的起点:https://www.cedarville.edu/insights/blog/excel-how-to-parse-data-split-column-into-multiple.aspx 但是,当我尝试使用此方法时,列拆分遇到错误并且拆分不正确(见图片)。我认为这是因为列数据是从 Excel 工作表的另一页在 VBA 中操作的实际数据。您将如何解决这种特质?
答案1
这是一个相当奇怪的 CSV,因为它包含 Excel 公式。CSV 不应该包含数据以外的任何内容。
目前单元格不仅具有数据值B09 - Theater
,还具有公式:
=IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""), "B09 - Theater")
这错误信息公式评估(虚拟)函数@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE""")
,如果返回错误,则写入值B09 - Theater
。
如果你不需要维护这些公式(我不知道它们是否有用)而只需要数据,最简单的方法就是选择所有单元格并将它们粘贴到新工作表中值。
之后你可以使用iskyfire 的答案。
答案2
根据我对您的帖子的评论,您可以这样做:
我还想指出,您的图片显示了对带有前缀“ @__xludf.
likely”的 VBA 函数的引用,这意味着该函数不适用于当前工作簿。它可能位于另一个工作簿的不同模块中,或位于不可用的库中。
无论如何,在第 1 部分的简单情况下分隔符part2,您可以使用上面的公式。
在更复杂的情况下,您可以选择数据中的任何单元格,然后使用数据>获取和转换数据>从表/范围启动 PowerQuery。
在 Power Query 编辑器中,您可以选择要拆分的列,然后使用“主页”>“转换”>“拆分列”>“按分隔符”并按如下方式配置(例如):
然后,您可以使用“主页”>“关闭并加载”将结果加载回工作簿。
答案3
将文本转换为列
如果您的单元格包含多个数据值,则可以使用内置的“将文本转换为列”向导将它们分开。这将创建一个每列包含 1 个数据值的表格,使您可以使用 Excel 提供的所有过滤器和排序方法。
笔记:例如,如果您有多个唯一的分隔符分隔每个数据值,83920/johndavis - new york city
则可以使用查找和替换将所有-
字符更改为/
或反之亦然。您需要使用相同的分隔符分隔每个数据值,否则您将需要多次运行向导。
删除多余的函数
如果您拥有的数据是封装的,则可以使用Match entire cell contents
已检查和Look in: Formulas
选定的“查找和替换”功能。
选择范围,进入“查找和替换”,输入内容并全部替换。例如替换=IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""),"
为空字符串。
然后您可以再次运行它以将结尾部分删除")
为空字符串。
确保在进行大规模查找和替换操作之前,已经备份了工作表的原始副本。