如何在Excel VBA中循环遍历行和列并连接两个文本单元格?

我是相当新的Excelmacros,我正在寻找一种方式来遍历行标题和列标题,并将它们合并到每个行和列标题的一个单元格,直到我已经将所有这些组合在一起。

第一列单元格的一个例子是“您的组织标题”

第一行单元格的例子是“22. Cheif投资官员”

我想在一张新表上列出的第一个合并单元格的例子是:“22.首席投资官(您的组织的职位)

然后,我希望新工作表上的组合单元向右偏移一列,直到它遍历所有的行和列。

我刚刚join论坛,它不会让我张贴图片或我会。 也许这提供了一个更好的主意,现在是我的代码:

Sub Fill() ' Select cell A2, *first line of data*. Set title = Sheets("Compensation, 3").Range("B6:B500") Set descr = Sheets("Compensation, 3").Range("C5:AAA5") ' Set Do loop to stop when an empty cell is reached. Do Until IsEmpty(title.Value) Do Until IsEmpty(descr.Value) ActiveCell.Offset(0, 1).Formula = _ "=title.value & "" ("" & descr.value & "")""" Set descr = descr.Offset(0, 1) Loop Set title = title.Offset(1, 0) Loop End Sub 

当我运行的时候把它放到活动单元格中:
=title.value & " (" & descr.value & ")"
它不能识别这些variables,并且出现NAME错误。 除了一个单元之外,它也进入一个无限循环,没有输出。

编辑:我不能回答我自己的问题,因为我是新来的论坛,但使用你的答案的组合我已经解决了这个问题! 这是完成的代码:

 Sub Fill() ' Select cell A2, *first line of data*. Set title = Sheets("Compensation, 3").Range("B6") Set descr = Sheets("Compensation, 3").Range("C5") offsetCtr = 0 ' Set Do loop to stop when an empty cell is reached. Do Until IsEmpty(title.Value) Do Until IsEmpty(descr.Value) ActiveCell.Offset(0, offsetCtr).Formula = title.Value & " (" & descr.Value & ")" offsetCtr = offsetCtr + 1 Set descr = descr.Offset(0, 1) Loop Set descr = Sheets("Compensation, 3").Range("C5") Set title = title.Offset(1, 0) Loop End Sub 

非常感谢!

 Option Explicit Sub GenerateAndPasteFormulaForTitleAndDescription( _ ByVal titlesRange As Range, ByVal descriptionRange As Range, _ ByVal startCellOnDestination As Range) Dim title As Range Dim descr As Range Dim offsetCtr As Long Dim formulaTemplate As String Dim newFormula As String formulaTemplate = "=CONCATENATE([1], '(', [2], ')')" startCellOnDestination.Worksheet.EnableCalculation = False For Each title In titlesRange.Cells For Each descr In descriptionRange.Cells If title.Value <> "" And descr.Value <> "" Then newFormula = Replace(formulaTemplate, "[1]", _ title.Address(External:=True)) newFormula = Replace(newFormula, "[2]", _ descr.Address(External:=True)) newFormula = Replace(newFormula, "'", Chr(34)) startCellOnDestination.Offset(0, offsetCtr).Formula = newFormula offsetCtr = offsetCtr + 1 End If Next Next startCellOnDestination.Worksheet.EnableCalculation = True End Sub 

以下是如何调用上述过程

 GenerateAndPasteFormulaForTitleAndDescription _ Sheets("Compensation, 3").Range("B6:B500"), _ Sheets("Compensation, 3").Range("C5:AAA5"), _ Sheets("new sheet").Range("B5") 

编辑:代码通过标题和描述的组合循环,检查它们是否都是空的,并创build一个公式。 它将公式粘贴到开始单元格中( Sheets("new sheet").Range("B5")在这种情况下为Sheets("new sheet").Range("B5") )并向前移动,并将下一个公式粘贴到旁边的列中

基本上,您正在尝试在工作表函数中使用VBA对象。 这并不完全正确。

尝试更换

"=title.value & "" ("" & descr.value & "")"""

=title.value & " (" & descr.value & ")"