1

我对 Excel 宏相当陌生,我正在寻找一种方法来循环遍历行标题和列标题并将它们组合到每个行和列标题的一个单元格中,直到我将它们全部组合起来。

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

第一行单元格的示例是“22. Cheif Investment Officer”

我想要在新工作表上的第一个组合单元格的示例如下:“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 & ")"
它无法识别变量并出现 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

太感谢了!

4

2 回答 2

1
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")

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

于 2013-07-09T19:55:26.013 回答
0

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

尝试更换

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

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

于 2013-07-09T19:36:51.270 回答