开发者社区 问答 正文

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

我有一个csv文件,其中包含成千上万条类似于文件的这两行的记录:

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中以编程方式完成?

展开
收起
几许相思几点泪 2019-12-03 15:57:36 994 分享 版权
阿里云 AI 助理回答

要解决您在Excel中遇到的问题,即CSV文件中的某些字段缺少双引号导致数据未能正确对齐到列,您可以采用以下步骤在Excel中以编程方式(使用VBA宏)自动为缺失的双引号进行补全:

解决方案

  1. 打开Excel并启用开发者选项

    • 首先,打开您的Excel文件。
    • 如果“开发者”选项卡未显示,请点击“文件” > “选项” > “自定义功能区”,在右侧勾选“开发者”复选框。
  2. 插入VBA代码

    • 转到“开发者”选项卡,点击“Visual Basic”以打开VBA编辑器。
    • 在VBA编辑器中,右击左侧的VBA项目窗口,选择“插入” > “模块”,以创建新的模块。
    • 将以下VBA代码粘贴到新模块中:
Sub AddMissingQuotes()
    Dim currentCell As Range, lineText As String, splitLine() As String
    Dim i As Long, quoteCount As Long, outputLine As String
    
    ' 从第一行开始遍历每一行
    For Each currentCell In ActiveSheet.UsedRange.Rows(1).Cells
        lineText = currentCell.Value
        ' 分割文本,检查是否每个元素都被双引号包围
        splitLine = Split(lineText, """")
        quoteCount = UBound(splitLine) + 1 ' 计算双引号数量
        
        ' 如果双引号数量是奇数,则表示有字段缺失双引号
        If quoteCount Mod 2 <> 0 Then
            ' 添加开头的双引号
            outputLine = """" & lineText
            ' 检查并添加每个逗号后的双引号,除了最后一个元素
            For i = 1 To UBound(splitLine) - 1 Step 2
                outputLine = outputLine & splitLine(i) & ""","""
            Next i
            ' 添加结尾的双引号和当前单元格的剩余内容
            outputLine = outputLine & splitLine(UBound(splitLine)) & """"
            
            ' 更新单元格的值
            currentCell.Value = outputLine
        End If
    Next currentCell
End Sub
  1. 运行宏
    • 回到Excel界面,再次转到“开发者”选项卡,点击“宏”。
    • 在弹出的“宏”对话框中,选择“AddMissingQuotes”,点击“运行”。

此VBA宏会遍历您当前工作表的第一行(假设标题行没有问题),检查每个单元格的文本,如果发现双引号数量为奇数,则说明至少有一个字段缺失了开头或结尾的双引号。宏会自动为这些字段添加缺失的双引号,并保持原有数据的完整性。请确保在执行此操作前备份您的原始数据,以防意外情况发生。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答