簡體   English   中英

Range.FormulaArray 在特定情況下導致錯誤

[英]Range.FormulaArray causing error in specific cases

我有一段代碼將數組公式放在一個范圍內。 它拋出運行時錯誤:1004“無法設置 Range 類的 FormulaArray 屬性”。 但是當我在單元格中粘貼相同的公式並按 Ctrl+Shift+Enter 時,一切正常。

strFormula = "=IF(SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))*  --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423))=0,TEXT(,),SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))*  --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423)))"

shtAbsoluteData.Range("D2").FormulaArray  = strFormula

插入 IF 條件時會出現問題。 因此,如果沒有 IF,以下代碼可以正常工作:

strFormula = "=SUM(--(A2=Data!$A$2:$A$1423)*--(B2=YEAR(Data!$B$2:$B$1423))*  --(C2=MONTH(Data!$B$2:$B$1423)) * (Data!$E$2:$E$1423))"

shtAbsoluteData.Range("D2").FormulaArray = strFormula

注意:如果我使用shtAbsoluteData.Range("D2").Formula那么沒有錯誤但結果不正確

Range.FormulaArray 屬性只能有 255 個字符,而您的顯示為 248 個。一些錯誤類型可能導致它超過限制。

strFormula = "=IF(SUM((A2=Data!$A$2:$A$1423)*" & _
                     "(B2=YEAR(Data!$B$2:$B$1423))*" & _
                     "(C2=MONTH(Data!$B$2:$B$1423))*" & _
                     "(Data!$E$2:$E$1423))," & _
                 "SUM((A2=Data!$A$2:$A$1423)*" & _
                     "(B2=YEAR(Data!$B$2:$B$1423))*" & _
                     "(C2=MONTH(Data!$B$2:$B$1423))*" & _
                     "(Data!$E$2:$E$1423))," & _
                 "TEXT(,))"   '<~~ 226 characters
shtAbsoluteData.Range("D2").FormulaArray = strFormula

正如我在評論中提到的,當布爾條件語句相互乘以時, 雙一元運算符不是必需的。 數學運算的行為使布爾值 ► 數值轉換。

備擇方案

在此工作表的 Excel 選項、高級、顯示選項中,您可以關閉在具有零值的單元格中顯示零。

任何會計編號格式都將顯示一個連字符代替零值。

可以生成完全不顯示零的自定義數字格式代碼 最簡單的方法之一是,

General;General;;@

我遇到了同樣的問題。 我為解決問題所做的是首先聲明范圍對象,然后在范圍上使用 .FormulaArray 。

使用 C#:

Microsoft.Office.Interop.Excel.Range eRange = wks.Range[wks.Cells[1,1], wks.Cells[20, 20]];
eRange.FormulaArray = $@"=some formula";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM