js0*_*823 2 excel vba excel-vba excel-formula
我得到类型不匹配13错误,我无法看到它在哪里.
这是代码.
Set concRange = Range(Cells(11, 48), Cells((10 + noDilutions), 48))
Set deadRange = Range(Cells(11, 49), Cells((10 + noDilutions), 49))
analysisSheet.Cells(f, 14).Value = _
(WorksheetFunction.Lookup(WorksheetFunction.Index(deadRange, _
WorksheetFunction.CountIf(deadRange, " >= " & _
(WorksheetFunction.Max(deadRange) / 2))), deadRange, concRange)) _
- (((WorksheetFunction.Index(deadRange, WorksheetFunction.CountIf _
(deadRange, " >= " & (WorksheetFunction.Max(deadRange) / 2)))) _
- (WorksheetFunction.Max(deadRange) / 2)) * ((WorksheetFunction.Lookup _
(WorksheetFunction.Index(deadRange, WorksheetFunction.CountIf(deadRange, _
" >= " & (WorksheetFunction.Max(deadRange) / 2))), deadRange, concRange)) _
- (WorksheetFunction.Lookup(WorksheetFunction.Index(deadRange, _
WorksheetFunction.CountIf(deadRange, " <= " & _
(WorksheetFunction.Max(deadRange) / 2))), deadRange, concRange))) _
/ ((WorksheetFunction.Index(deadRange, WorksheetFunction.CountIf(deadRange, _
" >= " & (WorksheetFunction.Max(deadRange) / 2)))) _
- (WorksheetFunction.Index(deadRange, WorksheetFunction.CountIf _
(deadRange, " <= " & (WorksheetFunction.Max(deadRange) / 2))))))
Run Code Online (Sandbox Code Playgroud)
我已经尝试将"WorksheetFunction"更改为"Application"和"Application.WorksheetFunction".
是的,它是一个非常长的公式:D
谁能帮我吗?
首先,写出这样的公式是一个非常糟糕的主意,主要有三个原因:
重构,它变成了
With WorksheetFunction
A = .Max(deadRange)
B = .CountIf(deadRange, " >= " & (A / 2))
C = .CountIf(deadRange, " <= " & (A / 2))
D = .Index(deadRange, B)
E = .Index(deadRange, C)
F = .Lookup(D, deadRange, concRange)
G = .Lookup(E, deadRange, concRange)
analysisSheet.Cells(ff, 14).Value = _
F - ((D - (A / 2)) * (F - G) / (D - E))
End With
Run Code Online (Sandbox Code Playgroud)
调试此揭示了问题:spaces各地>=中.CountIf(deadRange, " >= " & (A / 2))是错误的原因.
所以,请改用
B = .CountIf(deadRange, ">=" & (A / 2))
C = .CountIf(deadRange, "<=" & (A / 2))
Run Code Online (Sandbox Code Playgroud)