找不到Excel VBA公式types不匹配错误

我得到types不匹配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)))))) 

我试过把“WorksheetFunction”改为“Application”和“Application.WorksheetFunction”。

是的,这是一个非常长的公式:D

谁能帮我吗?

首先,写这样一个公式是一个非常糟糕的主意,主要有三个原因:

  • 这实际上是不可能理解的
  • debugging几乎是不可能的
  • 它重复许多计算=低效率

重构,它变成了

 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 

debugging这个问题揭示了这个问题: >= in .CountIf(deadRange, " >= " & (A / 2))是错误的原因。

所以,改用

  B = .CountIf(deadRange, ">=" & (A / 2)) C = .CountIf(deadRange, "<=" & (A / 2))