1

我想在我的程序中形成 CSV excel 文件。某些单元格包含 CSE (Ctrl+Shift+Enter) 公式(数组公式)。

这不起作用:

=SUM(IF(COUNTIF(B4:B1000;B4:B1000)=0; ""; 1/COUNTIF(B4:B1000;B4:B1000)))

这也不起作用:

{=SUM(IF(COUNTIF(B4:B1000;B4:B1000)=0; ""; 1/COUNTIF(B4:B1000;B4:B1000)))}

这个公式对单元格数组进行了不同的计数......

4

2 回答 2

2

尝试使用以下方法将您的数组公式转换为普通公式:

=SUMPRODUCT((B4:B1000<>"")/COUNTIF(B4:B1000;B4:B1000&""))

执行此操作的一般技术是将带有数组参数的函数包装在MMULT(...;1)

=SUM(IF(MMULT(COUNTIF(B4:B1000;B4:B1000);1)=0; ""; 1/MMULT(COUNTIF(B4:B1000;B4:B1000);1)))

例子

保存 CSV 文件时,请确保按 Ctrl+` [反引号] 显示公式,这是Excel 选项 > 高级 > 在单元格中显示公式的快捷方式,而不是计算结果。

在此处输入图像描述

上面的设置以 CSV 格式保存,如下所示。

Sheet1;
;"=SUMPRODUCT((B4:B1000<>"""")/COUNTIF(B4:B1000;B4:B1000&""""))"
;Values
;1
;2
;
;3
;1
;a
;a

您可以通过将文本文件的内容复制到新工作表中的单元格 A1 并选择Data > Text To Columns > Delimited > Delimiter: Semicolon来检查这一点。

我假设小数分隔符:,千位分隔符:(.Excel Options> Advanced中)。

于 2012-08-01T08:19:50.873 回答
0

如果要保留括号本身,则可以运行以下宏,然后将文件另存为 CSV。除了 lori_m 提到的 [Ctrl + `] 方法之外,您还可以执行此操作。

Option Explicit


Sub AddBrackets()

Dim cell As Range

With Sheet1
    For Each cell In UsedRange
        If cell.HasArray Then
            cell.Value = "{" & cell.FormulaLocal & "}"
        End If
    Next
End With

End Sub
于 2012-08-01T15:33:38.953 回答