【问题标题】:insert a formula with varying parameteres - error 13 type mismatch插入具有不同参数的公式 - 错误 13 类型不匹配
【发布时间】:2017-11-24 13:39:28
【问题描述】:

我是编程新手,而且我是这个领域的自学成才(从互联网复制大量代码行,大部分来自这里!)。

我必须在新工作表中插入一些计算,并在它们之间插入一个 vlookup 公式,其中每个工作表中的表格范围都会发生变化。由于我是代码编写的初学者,当我需要编写新的东西时,我会用它来录制宏,然后我会对其进行修改,直到达到我的目标。

在这种情况下我记录了公式:

ActiveCell.FormulaR1C1 = "=VLOOKUP(R[16]C[-6],R[14]C[-6]:R[19]C[-5],2,TRUE)"

并修改为:

Dim n, i As Integer
Dim mCell As Range

n = 7
i = 13726
Set mCell = ActiveSheet.Cells(3 + n + 8, 2)

Cells(4, 15).Formula = "=VLOOKUP(" & Cells(3, 15) & ";" & Range(Cells(3 + n + 8, mCell.Column), Cells(i - 1, n + 1)) & ";2;TRUE)"

在将其插入主宏之前。这是宏的简化版(我修复了变量,在原始变量中,每个新工作簿都会更改)。

当我运行它时,我收到“错误 13 - 类型不匹配”。 寻找答案并做了很多“try&error”,我一次又一次地检查它,我改变了相当多的公式:

  • 细胞(4,15)/范围(“O4”)
  • .Formula / .FormulaLocal / .Value
  • "=VLOOKUP(" / "=BUSCARV(" --> 我正在使用西班牙语的 excel,在工作表中,函数被翻译了
  • Cells(3,15) 和 Range(...) / Cells(3,15).Address 和 Range(...) / Cells(3,15).Address 和 Range(...).Address
  • , / ; --> 在工作表中我必须使用“;”,在 VBA 中自动记录为“,”
  • TRUE / VERDADERO --> 仍然是西班牙语点

我已经编写了所有排列(或组合?:-P)并随后运行所有排列(144 种变体),总是收到相同的错误类型。

所以,问题可能出在其他地方......我错过了什么? 非常感谢!!

【问题讨论】:

标签: excel formula vlookup vba


【解决方案1】:

Excel 是English 导向的,如果您使用的是Spanish 版本,那么首先您需要将Formula 更改为FormulaLocal。在公式中使用; 而不是, 作为函数参数之间的分隔符时,您需要使用FormulaLocal

其次,你把Dim n, i As Integer变暗,这意味着i As Integern As Variant,你需要定义Dim n As Long, i As Long

代码

Cells(4, 15).FormulaLocal = "=VLOOKUP(" & Cells(3, 15).Address & ";" & Range(Cells(3 + n + 8, mCell.Column), Cells(i - 1, n + 1)).Address & ";2;TRUE)"

【讨论】:

  • 天哪,谢谢!!!我不知道 long vs integer 问题,但是 i 用于计数循环,而 n 只是读取单元格中的值。
  • ops,输入“enter”错误...所以谢谢Shai,谢谢@Ralph!再注意一点:我写错了我如何更改一些公式,我试过:'Cells(3,15) and Range(...)' / 'Cells(3,15).Address and Range(... )' / 'Cells(3,15).Address and Range(cells().Address, cells().Address)',所以可能也是这一点不起作用。
猜你喜欢
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多