gpt4 book ai didi

vba - 根据标题值连接两列的宏

转载 作者:行者123 更新时间:2023-12-04 21:36:50 25 4
gpt4 key购买 nike

我在包含许多列的 Excel 电子表格中有两列。我想合并这两列,但它们在工作表中的位置可能会有所不同。这意味着我需要利用第一行列标题来确定要连接哪两列。我希望将结果添加为工作表中的下一列。

例如,“Brand”、“Line”和“Product”在第 1 行作为列标题,宏应搜索“Brand”中的值并将其与“Model”中的值连接起来,并将结果放入在工作表中插入列(在本例中为 D,但这可能会根据列数而改变)。我不能使用列或单元格引用,因为 Brand 和 Model 列的位置可能会改变,以及数量列:

一个      | B          | C                |品牌      |线路      |型号           |宾得    |相机   | K-30            |本田     |自动     |雅阁          |Apple      |电脑|| MacBook Air |

这是我尝试过的:

Sub Insrt()
Dim Model As Range
Dim Brand As Range
Dim LastRow As Long
Set Brand = Rows(1).Find(what:="Brand", LookIn:=xlValues, lookat:=xlWhole)
Set Model = Rows(1).Find(what:="Model", LookIn:=xlValues, lookat:=xlWhole)
If Found Is Nothing Then Exit Sub
LastRow = Cells(Rows.Count, Brand.Column).End(xlUp).Row
Model.Offset(, 1).EntireColumn.Insert
Cells(1, Model.Column + 1).Value = "Concatenated_Value"
Range(Cells(2, Model.Column + 1), Cells(LastRow, Model.Column + 1)).Formula = "=A2&C2"
End Sub

这种方法的问题是我的公式专门连接列 A 和 C。然而,品牌和型号可能不会每次都出现在这些特定的列中 - 将来,它们可能会转移位置。我该如何改进这一点,以便我不明确调用列 A 和 C,而是使用列标题?

最佳答案

我喜欢使用索引/匹配:

=F2 & " " &INDEX(A:C,MATCH(F2,A:A,0),MATCH("Model",1:1,0))

enter image description here

无论“模型”在哪里结束,它都会找到正确的列。

对于 VBA。将公式更改为
"=" & Cells(2,brand.column).address(0,0) & "&" & Cells(2,model.column).address(0,0)

关于vba - 根据标题值连接两列的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com