excel - 在 Excel (VBA) 中使用 Vlookup 实现
问题描述
我有两个表,Sheet2 中的 table2 和 Sheet1 中的 table1。我需要计算表 1 中的“vf”列。所有值都是随机的,除了 vf 它是所有其他值的函数(下面的公式)。实际公式工作正常,但我必须将 table2 扩大到第 100 列(在本例中使用其他随机值)。问题是:当我必须向 table2 添加 100 列时,如何重写“vf”的公式以便更短且易于理解?
创建“vf”的公式:
=IF(AND(A2="s2",E2>1),(C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,2,FALSE)+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,3,FALSE)*(1/(1+F2)^2)*(IF(E2>=2,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,4,FALSE)*(1/(1+F2)^3)*(IF(E2>=3,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,5,FALSE)*(1/(1+F2)^4)*(IF(E2>=4,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,6,FALSE)*(1/(1+F2)^5)*(IF(E2>=5,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,7,FALSE)*(1/(1+F2)^6)*(IF(E2>=6,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,8,FALSE)*(1/(1+F2)^7)*(IF(E2>=7,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,9,FALSE)*(1/(1+F2)^8)*(IF(E2>=8,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,10,FALSE)*(1/(1+F2)^9)*(IF(E2>=9,1,0))+C2*D2*VLOOKUP(G2,Sheet2!$A$2:$K$7,11,FALSE)*(1/(1+F2)^10)*(IF(E2>=10,1,0))),C2*D2*H2*VLOOKUP(G2,Sheet2!$A$2:$K$7,2,FALSE))
Sheet1中的表1:
Sheet2中的表2:
在 VBA 中翻译的伪代码(c++ 风格):
double VF(std::string c1, int year, double v1, double v2, double v3, double v4, double v5) {
double vf = 0; //initialize vf
int initialtableLookUpColumnNo = 2;
if ((c1 == "s2") && (v2 > 1)) {
for (int i=initialtableLookUpColumnNo; i=v2+1; i++) {
vf += vlookup(v4, Sheet2!$A$2:$K$7, i, FALSE) * v0 * v1 * (1/(1+v3)**(i-1));
}
}
else {
vf += vlookup(v4, Sheet2!$A$2:$K$7, 2, FALSE) * v0 * v1 * v5;
}
}
解决方案
推荐阅读
- c - C反转数组中的行
- go - 如何正确描述 proto 文件?
- node.js - passport-local-mongoose 和 Google Auth,如何使用 Passport.js 处理多个序列化程序?
- javascript - 在javascript中将承诺值返回给生成器函数
- python - x 轴名称在散景图之外
- c++ - 是否存在完美转发实际上可以提高性能的情况?
- javascript - 如何从 Material UI 为我的应用中的 React 添加带有 Back to Top 按钮的 AppBar?
- python - ImportError:当我在 python 中使用 quandl 模块时
- android - Android Studio:如何从片段中托管的 recyclerview(adapter.java) 关闭对话框片段
- excel - 想要将列 A 和 b 从一个 wkbook 粘贴到另一个 wkbook 下的特定标题(requstee 的名称)