2017-08-07 31 views
1

我想寫一個函數,取決於日期,但我不能讓它工作。 Excel不斷告訴我,此公式中使用的值具有錯誤的數據類型。所以它必須是日期,因爲除了添加日期值之外,我還有另一個功能完全相同。函數不工作,因爲我使用日期?

有人在Excel單元格C10中寫入日期,然後我不想從某個表格(在同一工作簿中的另一張表格中)中總結某些數字(預測通脹率,列P)的函數在開始日期(第一列)和結束日期(第J列)。

我已檢查過Excel是否將單元格C10解釋爲日期,但它具有序列號。

但我不明白爲什麼這是一個問題,因爲我用它來比較其他日期(序列號)?

Public Function FetchFactorInflation(Product As String, ArgName As String) As Double 

Dim Datum As Date 
Datum = DateValue(Worksheets("InputTariff").Range("C10").Value) 

Dim MinDatum, MaxDatum As Double 
MinDatum = "<=" & Datum 
MaxDatum = ">=" & Datum 

FetchFactorInflation = Application.SumIfs(Worksheets("tariff").Range("P:P"), _ 
         Worksheets("tariff").Range("I:I"), MinDatum, _ 
         Worksheets("tariff").Range("J:J"), MaxDatum, _ 
         Worksheets("tariff").Range("K:K"), Product, _ 
         Worksheets("tariff").Range("L:L"), ArgName) 

End Function 
+1

首先,定義'Dim MinDatum,MaxDatum As Double'意味着'MaxDatum As Double'和'MinDatum as Variant',它需要'Dim MinDatum As Double,MaxDatum As Double'。其次,您需要將日期轉換爲Double,如'MinDatum = CDbl(Datum)'。最後,當你檢查你的'SumIfs'函數時,你將使用'工作表(「關稅」)範圍(「我:我」),「> =」&MinDatum'。 –

+0

謝謝你的回答,它解決了我的問題! – AnnieFrannie

回答

0

錯誤的數據類型來自這裏:

MaxDatum = ">=" & Datum 

MaxDatum是雙重的,你是給>=它。它不能轉換爲Double。嘗試一下。

最快的解決辦法是這樣寫:

Dim MinDatum, MaxDatum

,而不是

Dim MinDatum, MaxDatum As Double

因此MaxDatum會很容易地轉換到你所需要的,因爲這將是變體以及MinDatum