EXCEL 格式变换疑难问题

zm681 2008-07-23 01:11:01
有一Excle表格如下,共1000多行
Destination rate Countrycodes Area codes
Afghanistan 0.2290 93
Albania 0.1709 355
American Samoa 0.0750 1 684
China - Mobile 0.2300 86 135, 136, 137, 138
China - Other 0.0352 86
Angola 0.1785 244
........
........
希望变换格式如下,凡是area code列中用逗号分割的不同地区,单独成行,其他不变 数据较多,且没有什么规律,如何编写vba 或实现方法,?

Destination rate Countrycodes Area codes
Afghanistan 0.2290 93
Albania 0.1709 355
American Samoa 0.0750 1 684
china - Mobile 0.2300 86 135
china - Mobile 0.2300 86 136
china - Mobile 0.2300 86 137
china - Mobile 0.2300 86 138
china - Other 0.0352 86
Angola 0.1785 244
。。。。。。
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zm681 2008-07-23
  • 打赏
  • 举报
回复
谢谢grance xu, 测试完全成功。结帖
gracexu 2008-07-23
  • 打赏
  • 举报
回复

Sub Macro1()

Dim workarea As Range
Dim rowCount As Long
Dim i, j As Long
Dim commaPos As Integer
Dim extractStr, tmpStr As String

Set workarea = Worksheets("sheet1").UsedRange
rowCount = workarea.Rows.Count

j = 1
For i = 1 To rowCount

commaPos = InStr(workarea.Cells(i, 4), ",")
If commaPos > 0 Then
tmpStr = workarea.Cells(i, 4)
loop_start:

extractStr = Left(tmpStr, commaPos - 1)
tmpStr = Mid(tmpStr, commaPos + 1)
commaPos = InStr(tmpStr, ", ")
workarea.Rows(i).Copy
Sheets("Sheet2").Select
Worksheets("sheet2").Paste Cells(j, 1)
Worksheets("sheet2").Cells(j, 4) = extractStr
j = j + 1
If commaPos > 0 Then
GoTo loop_start
Else
workarea.Rows(i).Copy
Sheets("Sheet2").Select
Worksheets("sheet2").Paste Cells(j, 1)
Worksheets("sheet2").Cells(j, 4) = tmpStr
j = j + 1
End If

Else
workarea.Rows(i).Copy
Sheets("Sheet2").Select
Worksheets("sheet2").Paste Cells(j, 1)
j = j + 1
End If
Next i
End Sub

zm681 2008-07-23
  • 打赏
  • 举报
回复
gracexu,能帮我编个宏命令么?原理我明白,因为不太熟悉宏和VB,我不太懂具体如何做编写,多谢
gracexu 2008-07-23
  • 打赏
  • 举报
回复
你可以编写一个宏命令,遍历所有数据行。
如果 areacode 不包括逗号,就把原行照样复制到新的表单;
如果 areacode 包含逗号,就再做个循环,把内容分离出来复制。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧