我有一个巨大的Excel电子表格,其中包含许多不同国家/地区的电话费率。
列的格式为: 国家,RateLocality,前缀,费率,批发
e.g。 Afganistan,Default,93; 930; 931; 9321; 9322; 9323; 9324; 9325; 9326; 9327; 9328; 9329; 9331; 9332; 9333; 9334; 9335; 9336; 9337; 9338; 9339; 9341; 9342; 9343; 9344; 9345; 9346; 9347; 9348; 9349; 9351; 9352; 9353; 9354; 9355; 9356; 9357; 9358; 9359; 9361; 9362; 9363; 9364; 9365; 9366; 9367; 9368; 9369; 9371; 9372; 9373; 9374; 9376; 938; 939; $ 1.023,$ 0.455
这些费率经常变化,我需要将它们带入另一个可以使用CSV导入它们的系统。
最终格式为:
LD PREPEND CODE即。 00或011,CountryCode,区号,注释,连接成本,包含秒数,每分钟成本,价目表,增量
所以转换上面那行我会有 00 “阿富汗”,93, “默认”,1.023,60,1.023,10 00, “阿富汗”,931, “默认”,1.023,60,1.023,10 ... 00 “阿富汗”,939, “默认”,1.023,60,1.023,10
00,60和10是硬编码的,并与excel的其他数据合并。
如何将此数据导出为所需的格式,因为我需要重新格式化它。
我应该导出到XML并使用XSLT或其他一些过程将数据按到CSV吗? 如果是这种情况,我该如何简单快速地完成。
答案 0 :(得分:1)
您可以使用VBA将数据写入新工作簿,然后另存为CSV。像这样:
Sub ConvertRates()
Dim strCountry As String
Dim strRateLocality As String
Dim strCodes As String
Dim dblRate As Double
Dim dblWholesale As Double
Dim vntCodes As Variant
Dim i As Integer
Dim lngRow As Long
Dim rngData As Range
Dim rngRow As Range
Dim wks As Worksheet
Dim wkbkNew As Workbook
Dim wksNew As Worksheet
Set wks = ThisWorkbook.Worksheets("Sheet1")
Set rngData = wks.Range("A2:B3")
Application.Workbooks.Add
Set wkbkNew = ActiveWorkbook
Set wksNew = ActiveSheet
lngRow = 1
For Each rngRow In rngData.Rows
strCountry = wks.Cells(rngRow.Row, 1).Value
strRateLocality = wks.Cells(rngRow.Row, 2).Value
strCodes = wks.Cells(rngRow.Row, 3).Value
dblRate = wks.Cells(rngRow.Row, 4).Value
dblWholesale = wks.Cells(rngRow.Row, 5).Value
vntCodes = Split(strCodes, ";")
For i = 0 To UBound(vntCodes)
If vntCodes(i) <> "" Then
wksNew.Cells(lngRow, 1).Value = "'00"
wksNew.Cells(lngRow, 2).Value = strCountry
wksNew.Cells(lngRow, 3).Value = vntCodes(i)
wksNew.Cells(lngRow, 4).Value = strRateLocality
wksNew.Cells(lngRow, 5).Value = dblRate
wksNew.Cells(lngRow, 6).Value = 60
wksNew.Cells(lngRow, 7).Value = dblRate
wksNew.Cells(lngRow, 8).Value = 10
lngRow = lngRow + 1
End If
Next i
Next rngRow
End Sub
您可能需要if语句来确定是否要编写'00或'011,并且显然要更改代码以使用相关的工作表和范围。
我没有内置大量测试,除了检查以确保代码不为空,因为您似乎在代码列表的末尾有一个分号,但您可能希望在将数据写入新工作簿之前进行更多检查。
答案 1 :(得分:0)
我不明白你为什么不使用file-&gt;另存为,将格式更改为csv并随后用脚本修改csv。大多数脚本语言都有很好的工具可以读取CSV文件并修改它们(R,python等)