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

如何在Excel VBA中循环行和列并连接两个文本单元格?,excel,vba,Excel,Vba,我是Excel宏的新手,我正在寻找一种方法来循环遍历行标题和列标题,并将它们合并到每个行标题和列标题的一个单元格中,直到我合并了所有行标题和列标题 第一列单元格的示例是“您的组织标题” 第一行单元格的示例为“22.Cheif投资官” 我希望在新工作表上列出的第一个组合单元的示例如下:“22.首席投资官(贵公司的头衔) 然后,我希望新工作表上的组合单元格向右偏移一列,直到它遍历所有行和列 我刚加入论坛,它不允许我发布图片,否则我会发布。也许这会给我一个更好的主意,下面是我的代码: Sub Fill

我是Excel宏的新手,我正在寻找一种方法来循环遍历行标题和列标题,并将它们合并到每个行标题和列标题的一个单元格中,直到我合并了所有行标题和列标题

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

第一行单元格的示例为“22.Cheif投资官”

我希望在新工作表上列出的第一个组合单元的示例如下:“22.首席投资官(贵公司的头衔)

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


我刚加入论坛,它不允许我发布图片,否则我会发布。也许这会给我一个更好的主意,下面是我的代码:

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&”)

它不识别变量,并产生名称错误。它还进入一个无限循环,除了一个单元格外没有输出

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

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

非常感谢!

基本上,您正在尝试在工作表函数中使用VBA对象。这样做不太有效

试着替换

“=title.value&”(&descr.value&)()”


=title.value&“(“&descr.value&”)

基本上,您尝试在工作表函数中使用VBA对象。这样做不太有效

试着替换

“=title.value&”(&descr.value&)()”

=title.value&“(&descr.value&“)”

编辑:代码在标题和描述的组合中循环,检查它们是否都为空,并创建一个公式。它将公式粘贴到起始单元格(
Sheets(“new sheet”).Range(“B5”)
)中,然后向前移动并将下一个公式粘贴到它旁边的列中


编辑:代码在标题和描述的组合中循环,检查它们是否都为空,并创建一个公式。它将公式粘贴到起始单元格(
Sheets(“new sheet”)。在这种情况下,范围(“B5”)
)并将下一个公式粘贴到它旁边的列中

你的伪代码有什么问题?你需要什么样的帮助?你能在表格后的>>之前显示屏幕截图吗?我刚刚加入论坛,它不会让我发布我想要的图片。你可以将其上传到任何地方,并在评论中添加链接或作为y的版本我们的问题。欢迎,这样做。既然你已经通过答案解决了问题,你应该接受其中一个答案,并且可能会对答案进行投票。你的伪代码有什么问题?你需要什么样的帮助?你能在>>表后显示屏幕截图吗?我刚刚加入论坛,它不允许我发布我的图片您可以将其上传到任何地方,并在评论中添加链接或将其作为问题的版本。欢迎使用。既然您通过答案解决了问题,您应该接受其中一个答案,并可能接受向上投票的答案。
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")