首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Excel中为csv文件以编程方式添加缺少的双引号

在Excel中为csv文件以编程方式添加缺少的双引号
EN

Stack Overflow用户
提问于 2019-12-03 07:47:42
回答 2查看 615关注 0票数 0

我有一个csv文件,其中有数以千计的记录,这些记录看起来与文件的这两行类似:

代码语言:javascript
复制
TransferWise NZ "6400518"   "996467362814"  "Failed"    "P2569534"  "30/11/2019 9:54:27 PM" 
Growth Collective   "SS64007605"    "996467363128"  "Completed" "X255536"   "30/11/2019 10:07:49 PM"

当在Excel中打开时,这些记录中的每一条都占用一个电子表格列。

初始字段(公司名称)缺少双引号。我真的不想手动浏览这个文件并添加双引号,如果我可以避免它。有什么方法可以在Excel中编程完成吗?

数据截图:

更新:2行完整的文件.

代码语言:javascript
复制
The Growth Collective Limited   "SS64007605"    "996467363045" "Completed"  "my payee particulars|7uqh355g|355gkq2y|7uqh355gkq2y"   "30/11/2019 10:04:26 PM"    "30/11/2019 10:05:22 PM"    ""  "57.50" "ASB-P4-NZ" ""  "0199075"   "123216"    "00"    "True"  "MR P HUANG"    "4 "    "M" "MercoMGNZ" "Merco MGNZ"    "2" "LNDUXJJTHIWQYOXHUKHQAMETELHHMRHV"  "",,,,,,

2degrees Mobile Limited "6400910"   "996467332367"  "Completed" "|POLIPRE|220181318|"   "30/11/2019 7:04:02 AM" "30/11/2019 7:04:58 AM" "16053" "20.00" "Westpac-P4-NZ" ""  "0289335"   "030866"    "000"   "True"  ""  "4 "    "M" "MercoMGNZ" "Merco MGNZ"    "2" "220181318 POLIPRE MobileApp 1-9YH-3304"    "",,,,,,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-03 08:08:29

就像你说的,你有很多数据。此方法将在添加引号时将范围"A“中的所有单元格读取到数组中,然后将数组打印到范围内。在尝试之前,请确保备份数据,以防意外发生。还请注意,这将在遇到空单元格时抛出错误,或者遇到没有"的单元格(指示只有一列)。此外,这将全部张贴到B列,由于不覆盖您的数据,您可以将其移动到A列,如果您愿意。

代码语言:javascript
复制
Sub adquote()
Dim cel As Long
Dim arr() As Variant
Dim lastr As Long

lastr = Range("A" & Rows.Count).End(xlUp).Row

ReDim arr(1 To lastr)

For cel = 1 To lastr
    arr(cel) = """" & Left(Range("A" & cel).Value, InStr(Range("A" & cel).Value, """")) & """" & Right(Range("A" & cel).Value, Len(Range("A" & cel).Value) - InStr(Range("A" & cel).Value, """"))
Next cel

Range("B1:B" & lastr).Value = Application.Transpose(arr)
End Sub

正如您所述,要使此版本正常工作遇到了一些困难,也许没有数组的版本就能做到这一点:

代码语言:javascript
复制
Sub adquote()
Dim cel As Long
Dim lastr As Long

lastr = Range("A" & Rows.Count).End(xlUp).Row

For cel = 1 To lastr
    Range("B" & cel).value = """" & Left(Range("A" & cel).Value, InStr(Range("A" & cel).Value, """")) & """" & Right(Range("A" & cel).Value, Len(Range("A" & cel).Value) - InStr(Range("A" & cel).Value, """"))
Next cel

End Sub
票数 1
EN

Stack Overflow用户

发布于 2019-12-03 12:40:24

这可以在Excel中通过使用相当简单的公式来完成,而不需要任何VBA。

在单元格B1中:

=""""&SUBSTITUTE(A1," """,""" """,1)

复制到最后一个数据行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59152342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档