1

シート1には非常に大きなグリッドがあり、365の列があり、それぞれが1月1日から1年のうちの1日です。

行は製造現場に対応しており、それらの多くもあります。

シート2には何もありませんが、私が欲しいのは、グリッドのすべてのセル参照を含むシート2の最初の列の大きなリストです。

具体的にはIF(ISBLANK("A1","","A1))、セルが空の場合は何も返されず、値がある場合はその値が返されるように、VBAを挿入したいと思います。

私はまだVBAを学習していますが、最初の列でループを実行してから2番目の列に移動し、ループを実行する方法がわかりません。

4

2 に答える 2

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
于 2012-05-02T14:36:06.837 に答える
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
于 2012-05-02T14:40:16.430 に答える