办公室 365
TEXTSPLIT:我没有这个新功能。请提出解决方案。我不懂 VBA。
问题:从我们的会计服务下载到 Excel 文件时,所有数据都放在一个没有分隔符的单元格中。数据大约有 200 行。
搜索其他帖子:有约 1600 个帖子,因此没有搜索全部
- 将单个单元格中的数据拆分为多个记录:与帖子有相似之处,只是单元格内没有 AltReturn 来分隔数据。
- 如何将一行 Excel 数据拆分为多行:我正在查看 Power Query,但建议的响应认为有逗号分隔符
同一单元格中 4 条记录的数据示例:
APS Deposit 04/01/2022 $5,174.27 APS ACH Deposit 04/04/2022 $65,186.66 APS Deposit 04/04/2022 $10,380.00 APS Deposit 04/05/2022 $5,943.36
所需结果(列间距):
APS 存款 | 2022 年 4 月 1 日 | 5,174.27 美元 |
APS ACH 存款 | 2022 年 4 月 4 日 | 65,186.66 美元 |
APS 存款 | 2022 年 4 月 4 日 | 10,380.00 美元 |
APS 存款 | 2022 年 4 月 5 日 | 5,943.33 美元 |
谢谢您的任何意见。
答案1
答案2
在 Power Query 中执行的操作如下:
- 在数据表中选择一些单元格
Data => Get&Transform => from Table/Range
或者from within sheet
- 当 PQ 编辑器打开时:
Home => Advanced Editor
- 记下表格姓名在第 2 行
- 将下面的 M 代码粘贴到您所看到的位置
- 将第 2 行的表名改回最初生成的表名。
- 阅读评论并探索
Applied Steps
以了解算法
M 代码
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
//Insert delimiters by prepending semicolon to every instance of " APS" (so will exclude the first "APS"
#"Insert Delimiters" = Table.TransformColumns(#"Changed Type",{"Column1", each Text.Replace(_," APS",";APS")}),
//Split by the semicolon into rows
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Insert Delimiters", {
{"Column1", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
//Split the column by the last two spaces {" "," "}
#"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Column1",
Splitter.SplitTextByEachDelimiter({" "," "}, QuoteStyle.Csv, true), {"Type", "Date","Amount"}),
//set the data types
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Date", type date}, {"Amount", Currency.Type}})
in
#"Changed Type1"
答案3
假设您已将数据粘贴到 A1 单元格中。
您可以在任何其他单元格中使用公式,如下所示:
=CONCATENATE("APS " & FILTERXML("<t><s>" & SUBSTITUTE(A1; "APS"; "</s><s>") & "</s></t>"; "//s"))
输出中的第一个单元格会出错 - 这是因为输入字符串以“APS”开头,而过滤器获取的替换字符串以“</s><s>”开头。您可以尝试进一步解决此问题。
答案4
使用 Excel 中的内置函数无法轻松完成此操作,尤其是在您不了解 VBA 的情况下。
如果你不介意使用其他工具,我强烈建议你使用 Sublime Text 来处理原始数据。它就像是 Notepad 的高级版本,我最喜欢的功能是它允许你毫不费力地选择特定字符,然后使用多个光标和箭头键同时编辑它们。
您可以遵循以下一些简单的步骤来处理数据:
- 下载并安装Sublime Text,还有便携版本可用,选择您喜欢的版本。
- 打开 Sublime Text,将所有数据粘贴到其中。屏幕截图 1
- 观察:每行数据有且仅有 1 笔交易,并且小数点后始终有 2 位。这就是我们可以开始处理的地方。
- 用鼠标光标突出显示交易中的任何
.
交易,然后按住Ctrl
+D
直到全部.
选中。(或者,您可以按Ctrl
+H
打开搜索功能,然后单击Find All
按钮全选.
)屏幕截图 2 - 按箭头键
->
3 次移动到每笔交易的末尾,然后Enter
按键。现在您已将每笔交易分成几行。屏幕截图 3 - 接下来,您需要添加分隔符。关注步骤4要选择全部
$
,请按箭头键<-
向左移动一次,然后键入#
分隔符(或原始数据中未使用的任何其他字符)。屏幕截图 4 - 与...一样第 6 步,全选
/20
,向左移动 6 次,任意在日期前输入“#”。屏幕截图 5 - 最后,您可以将其保存为
.txt
文件,然后使用文本导入向导在 Excel 中的功能中使用它#
作为分隔符来获得所需的结果。
这些动作乍一看可能很复杂,但熟悉之后只需要几分钟,可以为你以后处理此类数据节省大量时间。