Excel 2019:CountA 正在计算从 CSV 导入的数据中的空单元格
Excel 2019: CountA is counting empty cells in data imported from CSV
我最近从 Windows 7 升级到 10,从 Office 2007 升级到 2019。今天,我将 CSV 文件导入 Excel:
Data > From Text/CSV > Load
向导将 "File Origin" 指示为“1200: Unicode”,将分隔符指示为逗号。该文件确实有逗号分隔符,文本周围有双引号。
与 Excel 2007 有直接的视觉差异 -- 导入的数据自动添加了 table 格式。它很漂亮,但我不想要它,我找到了如何通过转到 "Table Design"、取消选中 "Header Row" 和 "Banded Rows" 并单击 "Convert to Range" 来摆脱它("Table Design" 从主菜单中消失),然后删除为不需要的 header 行添加的第 1 行。如果有人能说出如何在不添加 table 格式的情况下导入数据,我想知道,尽管还有一个更重要的问题。
与 Excel 2007 年一样,设置了与 CSV 文件的连接。我不需要那个,所以我删除了它,就像我在 Excel 2007 年所做的那样。
现在问题来了。由导入的行数和列数限定的整个矩形单元格范围现在被视为每个单元格中都有数据,包括那些为空的单元格。即使 CSV 文件中只有一个数据元素(即双引号外没有逗号)的行也是如此,因此只有 A 列应该包含这些行的数据。当我说空单元格被视为有数据时,我的意思是:
- len(
<cell>
) = 0(表示单元格为空)
- CountA(
<cell>
) = 1(意思是Excel认为不为空)
- CountBlank(
<cell>
) = 1(意思是Excel精神分裂也认为是空的)
- Ctrl-arrow 跳过这些单元格以及包含数据的单元格。
- 在包含这些单元格的列上排序 A-Z 会将它们的行放在顶部,而不是底部,当我在 Excel 2007 年执行此过程时,它们最终位于底部。
编辑:通过进一步测试,我确定发生的情况是 Excel 错误地将导入中的空单元格视为空字符串。
在 Excel 2019 年导入 CSV 文件时,我是否需要做一些不同的事情才能正确处理空单元格?
- 我可以证实你的观察。
- 根据@NewSites 的建议并经我确认,当使用当前向导导入 CSV 文件时,空白单元格的内容为空字符串
""
(Value = ""
),而当使用旧版向导导入时,单元格实际上仍然是 Empty
- 除您注意到的内容外,在 table 范围内执行的
.SpecialCells(xlCellTypeBlanks)
将找不到任何单元格。
3 种解决方法
- 使用 "Legacy Wizard" 进行文本导入。
- 这并不能说明问题
- 要启用旧版向导,请导航到
File > Options > Data
和 select 所需的旧版向导。然后它们将作为选项显示在 Data > Get & Transform Data > Get Data
下拉列表中。
- Select table/range 和 Del 中的空白单元格(可能最好使用 VBA 代码完成,如果你有很多单元格到 select.
- 在执行 PowerQuery 导入时,当向导打开时
- Select
Transform Data
- 替换值
- 要查找的值:留空,空
- 替换为:null (是的,就是这样输入的。它是一个 "keyword")
- 然后关闭并加载文件
我最近从 Windows 7 升级到 10,从 Office 2007 升级到 2019。今天,我将 CSV 文件导入 Excel:
Data > From Text/CSV > Load
向导将 "File Origin" 指示为“1200: Unicode”,将分隔符指示为逗号。该文件确实有逗号分隔符,文本周围有双引号。
与 Excel 2007 有直接的视觉差异 -- 导入的数据自动添加了 table 格式。它很漂亮,但我不想要它,我找到了如何通过转到 "Table Design"、取消选中 "Header Row" 和 "Banded Rows" 并单击 "Convert to Range" 来摆脱它("Table Design" 从主菜单中消失),然后删除为不需要的 header 行添加的第 1 行。如果有人能说出如何在不添加 table 格式的情况下导入数据,我想知道,尽管还有一个更重要的问题。
与 Excel 2007 年一样,设置了与 CSV 文件的连接。我不需要那个,所以我删除了它,就像我在 Excel 2007 年所做的那样。
现在问题来了。由导入的行数和列数限定的整个矩形单元格范围现在被视为每个单元格中都有数据,包括那些为空的单元格。即使 CSV 文件中只有一个数据元素(即双引号外没有逗号)的行也是如此,因此只有 A 列应该包含这些行的数据。当我说空单元格被视为有数据时,我的意思是:
- len(
<cell>
) = 0(表示单元格为空) - CountA(
<cell>
) = 1(意思是Excel认为不为空) - CountBlank(
<cell>
) = 1(意思是Excel精神分裂也认为是空的) - Ctrl-arrow 跳过这些单元格以及包含数据的单元格。
- 在包含这些单元格的列上排序 A-Z 会将它们的行放在顶部,而不是底部,当我在 Excel 2007 年执行此过程时,它们最终位于底部。
编辑:通过进一步测试,我确定发生的情况是 Excel 错误地将导入中的空单元格视为空字符串。
在 Excel 2019 年导入 CSV 文件时,我是否需要做一些不同的事情才能正确处理空单元格?
- 我可以证实你的观察。
- 根据@NewSites 的建议并经我确认,当使用当前向导导入 CSV 文件时,空白单元格的内容为空字符串
""
(Value = ""
),而当使用旧版向导导入时,单元格实际上仍然是Empty
- 除您注意到的内容外,在 table 范围内执行的
.SpecialCells(xlCellTypeBlanks)
将找不到任何单元格。
3 种解决方法
- 使用 "Legacy Wizard" 进行文本导入。
- 这并不能说明问题
- 要启用旧版向导,请导航到
File > Options > Data
和 select 所需的旧版向导。然后它们将作为选项显示在Data > Get & Transform Data > Get Data
下拉列表中。
- Select table/range 和 Del 中的空白单元格(可能最好使用 VBA 代码完成,如果你有很多单元格到 select.
- 在执行 PowerQuery 导入时,当向导打开时
- Select
Transform Data
- 替换值
- 要查找的值:留空,空
- 替换为:null (是的,就是这样输入的。它是一个 "keyword")
- 然后关闭并加载文件
- Select