我在一家慈善机构工作,对 Excel 不太熟悉。
数据从我们的网站导入到电子表格中,但订单没有像我希望的那样分成行和列。是否可以将多行数据排列到一列中?并非每行都有相同数量的条目。我已使用文本转列将 csv 数据转换为列。
谢谢
编辑
导入的内容在 csv 文件中的显示方式如下:
订单 产品名称 50, 30 水援助,食品包裹 5 普通 20 医疗 1, 5, 20, 100 普通,水援助,医疗,食品
这就是我希望它看起来的样子。
订单 产品名称 50 水援助 30 食品包裹 5 通用 20 医疗 1 通用 5 水援助 20 医疗 100 食品
真的不确定如何在这里导入 csv 格式,有人可以帮忙吗?
答案1
VBA 宏解决了该问题:
怎么运行的:
- 按Alt+F11打开 VB 编辑器。
- C奥皮&磷将此代码作为标准模块。
Sub SplitData()
Dim xRg As Range
Dim xRg1 As Range
Dim xCell As Range
Dim i As Long
Dim xAddress As String
Dim xUpdate As Boolean
Dim xRet As Variant
On Error Resume Next
xAddress = Application.ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select a column", "Split Data", xAddress, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If xRg.Columns.Count > 1 Then
MsgBox "You can't select multiple columns", , "Split Data"
Exit Sub
End If
Set xRg1 = Application.InputBox("Split to (select single cell):", "Split Data", , , , , , 8)
Set xRg1 = xRg1.Range("A1")
If xRg1 Is Nothing Then Exit Sub
xUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
For Each xCell In xRg
xRet = Split(xCell.Value, ",")
xRg1.Worksheet.Range(xRg1.Offset(i, 0), xRg1.Offset(i + UBound(xRet, 1), 0)) = Application.WorksheetFunction.Transpose(xRet)
i = i + UBound(xRet, 1) + 1
Next
Application.ScreenUpdating = xUpdate
End Sub
- 打Alt+Q返回工作表。
- 年代将文件保存为,米acro 已启用 (
.xlsm
)。 - R联合国宏观。
- 从 Col A 中选择所需的单元格。
- 完成哦k.
- 选择单个单元格进行输出并完成哦k.
- R再次取消宏并对产品列重复该过程。
- 您将获得最终输出。
注意: 此宏每次作用于一列。