用 .csv 文件中的 VBA 仅在 3 列中用分号替换逗号

Posted

技术标签:

【中文标题】用 .csv 文件中的 VBA 仅在 3 列中用分号替换逗号【英文标题】:Replace comma with semi-colon in only 3 columns with VBA within .csv file 【发布时间】:2015-12-18 17:11:00 【问题描述】:

让我看看我是否可以再试一次。我有一个 CSV 文件。它代表逗号分隔值,它是一种文件格式。在这个文件中,下面的每个单元格中有几列不同的数据。如果我在记事本中打开 CSV 文件,每个“单元格”都用逗号分隔,因此是文件格式名称。在 Excel 中,没有逗号。单元格显然由表格边界线分隔。我想要做的是用分号替换 F 到 H 列、第 2 行及以下(也有数据)中的逗号。文件中的其余逗号保持不变。

【问题讨论】:

录制一个 vba 宏,用 ; 替换逗号看看代码 我已经弄清楚了分号。现在,我试图弄清楚如何删除 vColumns 数组(列 F 到 H)中的逗号。这是一个 csv 文件。逗号被视为列表分隔符。 @dacrovinunghi - 我已经这样做了,我意识到单元格内的数据会有所不同。所以,看这样的代码是没有用的。我正在寻找用 ; 替换默认列表分隔符(, - 逗号) (分号)3 列。 我们需要一个样本,这很奇怪 @dacrovinunghi - 请查看我的更新。谢谢。 【参考方案1】:
Sub AddSemicolonsINSTALLMENT()
    Dim vColumns As Variant, vColumn As Variant
    Dim rCol As Range, rCell As Range

    vColumns = Array("F", "G", "H")

    For Each vColumn In vColumns
        Set rCol = Range(Range(vColumn & "2"), Cells(Rows.Count, vColumn).End(xlUp)) '<<EDIT
        For Each rCell In rCol.Cells
            rCell.Value = ";" & Replace(rCell.Value, ",", ";") & ";"
        Next rCell
    Next vColumn

End Sub

【讨论】:

它仍然没有删除所选列中的逗号。 这是您在 Excel 中打开的 CSV 文件,对吗?我觉得你的问题中缺少一些关于你想要做什么的重要信息......看起来你想用分号替换分隔符逗号,但目前尚不清楚一旦 CSV 在 excel 中打开,它将如何工作(因为那时分隔符逗号将不存在) 是的,这是我在 Excel 中打开的 CSV 文件。是的,这正是我想要做的。我一直试图弄清楚如何做到这一点,而不必手动去每个单元格并替换它。 查看我上面的编辑:测试并为我工作(至少,它完成了您发布的代码似乎打算做的事情) 对不起。但似乎我并没有像我想象的那样解释它。我了解在 Excel 中,CSV 文件中的任何单元格中都没有可见逗号。但是,当我在记事本中打开 CSV 文件时,它们就在那里。特定列中的逗号是我要替换的逗号。在这个专业领域你有什么可以推荐的书吗?

以上是关于用 .csv 文件中的 VBA 仅在 3 列中用分号替换逗号的主要内容,如果未能解决你的问题,请参考以下文章

csv转excel,用vba实现

excel表VBA中用代码如何建立多级combobox下拉菜单

C#:用 CSV 中的单列填充组合框

对文件夹中的所有文件执行 VBA 宏

如何将带有 YYYYMMDD 列的 CSV 文件导入 ClickHouse 中的 DATE 列

如何将 CSV 数据导入多个数组并通过 VBA 中的函数或子函数返回多个数组?