首页 > 解决方案 > 如何将 Excel 公式的一部分转换为值

问题描述

我正在寻找使用 VBA 将 excel 公式的一部分转换为“值”。将生成的公式放在一个单元格中很重要,因此我不能只将一个单元格转换为值,而让另一个单元格继续存在。举个例子,下面的开始公式指的是两张工作表,一张在工作簿内部,一张在工作簿外部。

本质上,我想让内部引用保持活动状态,但外部引用被转换为一个值。我试过使用链接中断功能,但不幸的是这会杀死整个公式。

起始公式:

=MATCH(A4,InternData!$A:$A,0)+MATCH(A4,[ExternalWorkbook.xlsx]ExternData!$A:$A,0)

期望的结果:

=MATCH(A4,InternData!$A:$A,0)+ [Value that would be generated by external match function]

标签: excelvba

解决方案


遍历您计划将公式放入的列。

这假定 ExternalWorkbook.xlsx 已在工作簿集合中打开。

从外部匹配返回的行号不受 #N/A 无匹配错误的错误控制。

dim i as long, lr as long, erng as range

set erng = workbooks("ExternalWorkbook.xlsx").worksheets("ExternData").columns("A")

with thisworkbook.worksheets("sheet1")

    lr = .cells.count(.rows.count, "A").end)xlup).row

    for i = 4 to lr

        .cells(i, "B").formula = _
          "=match(a" & i & ", InternData!$A:$A, 0)+" & application.match(.cells(i, "A").value, erng , 0)

    nrxt i

end with

推荐阅读