在工作表1中循环网格,在工作表2的列中返回带公式的单元格引用

时间:2012-05-02 14:20:42

标签: excel vba excel-vba

我在Sheet 1中有一个非常大的网格,有365列,每一列是一年中的一天,从1月1日开始。

行对应于制造地点,其中也有很多。

Sheet 2中没有任何内容,但我想要的是Sheet 2第一列中的大型列表,其中包含网格的所有单元格引用。

更具体地说,我希望VBA插入IF(ISBLANK("A1","","A1)),这样如果单元格为空,则不返回任何内容,如果有值,则返回该值。

我还在学习VBA,我不知道如何在第一列上运行循环,然后转到第二列,运行循环....

2 个答案:

答案 0 :(得分:1)

如果您真的想使用vba,可以将公式复制到整个范围:

Sub doIt()

  Dim lastRow As Long

  lastRow = Sheets("Sheet1").UsedRange.Rows.Count

  With Sheets("Sheet2")
    .Range("A1:NA" & lastRow).FormulaR1C1 = "=IF(ISBLANK(Sheet1!RC),"""",Sheet1!RC)"
  End With

End Sub

答案 1 :(得分:0)

试试这个:

Sub copyFilledCells()

Dim r As Range, c As Range
Dim position As Integer


position = 1

Set r = ActiveWorkbook.Sheets("Sheet_1").Range("A:AZ")

For Each c In r
    If (c.Value <> "") Then
        ActiveWorkbook.Sheets("Sheet_2").Range("A" & position).Value = c.Value
       ' Try this if you want to insert the cell address as Formula
       'ActiveWorkbook.Sheets("Sheet_2").Range("A" & position).Formula = "=" & c.Parent.Name & "!" & c.Address(External:=False)

        position = position + 1
    End If

Next c

End Sub