Vba 如何使用另一列数据映射两列
我有五个专栏 例如Vba 如何使用另一列数据映射两列,vba,excel,Vba,Excel,我有五个专栏 例如 第1栏:名称 第二栏:姓氏 第3栏:映射 第4列:映射数据 列包含如下数据: Name Surname Mapping Name1 Surname1 1 ABC 1 AAAA 3 ABC QQQQ 2 XYZ 2 XXXX 1 XYZ AAAA 3 OPQ
Name Surname Mapping Name1 Surname1
1 ABC 1 AAAA 3 ABC QQQQ
2 XYZ 2 XXXX 1 XYZ AAAA
3 OPQ 3 QQQQ 4 OPQ RRRR
4 RST 4 RRRR 2 RST XXXX
现在,我的目标是使用mappingcolumn将name列映射到姓氏,结果应该存储在Name1和names1列中。我在“姓名”和“姓氏”列中有更多数据,通过在“映射”列中写入数字,它将自动将姓氏映射到名称(用户可以选择在映射列中输入数字,然后相应地映射数据),结果应复制到“名称1”和“姓氏1”
我不知道如何使用VBA实现这一点。编码Plz帮助我….Amar,使用Excel的内置函数,当然有很多方法可以实现这一点,但是,既然您询问了VBA解决方案,那么您可以:
Function Map(n)
Map = Cells(n + 1, 2)
End Function
将上述代码放入项目的VBA编辑器将允许您以与Excel的任何内置函数相同的方式使用此自定义函数。也就是说,在任何单元格中输入=Map(C3)
都会得到您想要的结果(其中C3是包含映射号的单元格)。该函数通过返回[n行(在映射列中定义)+1(用于说明标题行);第2列(包含您姓氏的列)]中的数据来工作。“Name1”列中的数据将始终与“Name”列中的数据相同(看起来如此)。因此,“Name1”列中的函数就是=A2
如果这不能解决您的问题,或者您需要进一步的指导,请让我知道
补充
@阿玛,@freakefuer的评论很到位。VBA对于像这样简单的东西来说真是太过分了,正如他指出的,可移植性和安全性都是显著的缺点。偏移量是一个很好的选择。名称/姓氏列是否有两个值可能重复?或者您只是将它们一起显示?他们真的有两个单独的栏目来写#和文本吗?可能是我遗漏了什么,但我没有看到您提供的数据中出现任何一致的映射。Sry我在问题陈述中出错了……我将编辑它,感谢ans……名称和姓氏是两个不同的列……共有五列colum1 Name colm2 Name colm3 mapping colm4 Name1 colm 5Surname1@Amar-您可以避免一些缺点如果您不必使用VBA。可移植性和安全性是其中的两个。因此,我建议使用“OFFSET”,除非您确实需要VBA解决方案。