使用 vbs 删除 .csv 中具有空列的行

Deleting rows with empty columns in .csv with vbs

我目前必须为我的工作编写一个脚本,如果在带有 vbs 的 .csv 文件中 D 列为空,则删除整行。

我发现了一个可行的解决方案,虽然我有点挣扎。

enter   Const xlUp = -4162    ' Excel variables are not defined in vbscript
'Set objFile = objFSO.OpenTextFile("Testexport_neu.csv", ForReading) 'Datei Quelle
    Dim oBook : Set oBook = objFile
    Dim oSheet : Set oSheet = oBook.Sheets(1)
    Dim iLastRow, iRow

iLastRow = oSheet.Cells(oSheet.Rows.Count, 3).End(xlUp).Row
For iRow = iLastRow to 1 Step -1 'assumes a header row otherwise use 1 instead of 2
    If oSheet.Range("D" & iRow) = "" Then
        oSheet.Range("D" & iRow).EntireRow.Delete ' delete row if blank
End If

现在解决我的问题,因为我找不到任何有用的文档,所以我不知道如何以正确的方式实现 .csv 文件。 ...或者 oXYZ 方法的作用...

感谢任何建议

至于为什么我没有对 Dave 放置此代码的原始 post 发表评论,因为这个 post 是在 2018 年制作的,我不确定我是否在那里恢复任何答案待定

必须是 VBScript 吗?

您的数据真的是像这样的 CSV(基于文本)吗? Post一个小例子,会有很大帮助。

COLA;COLB;COLC;COLD;COLE;COLF
AAA;BBB;CCC;DDD;EEE;FFF
A2;B2;C2;;E2;F2           <<<< left out
A3;B3;C3;D3;E3;F3

使用 AWK 可以轻松完成这项工作:拆分行(只需设置分隔符)然后检查 D 列是否为空,如果不为空则打印整行。

实际上这将完成您的要求:过滤掉具有空列 D 的行。不是通过删除它,而是通过输出所有其他内容。稍后我将通过示例编辑此 post。 AWK 是一个免费程序,几乎每个 OS 都可以使用。

同样可以用其他工具完成。

顺便说一句,您似乎像处理 Excel 文档一样处理 CSV 文件,访问 Excel 功能。 Excel 希望 Windows 相信 CSV 实际上是 Excel sheet,当它只是文本时。这可能会导致一些不良影响,因为 Excel 试图代表您变得“聪明”。