1

大きな Excel ファイルがあり、12 列のすべての値を完全に置き換える必要があります。

現在、各セルに数式があり、その数式を独自の数式に置き換える必要があります。

どの行から始まるかはわかっているが、最後の行がわからない(ファイルは常に更新されている)すべての列をループするにはどうすればよいですか。「A600000」のハックはやり過ぎのようです。

私はVBAが初めてなので、いくつかのガイダンスをいただければ幸いです。

4

3 に答える 3

2

ActiveSheet.UsedRange現在のシートで使用されているすべてのセルの範囲です。
とを使用して、この範囲の高さと幅を取得できActiveSheet.UsedRange.Rows.Countます.Columns.Count

範囲内のすべてのセルにヒットする非常に大雑把な関数を次に示します。

Sub test()
    Dim thisRange As Range
    Set thisRange = ActiveSheet.UsedRange
    With thisRange
        For y = 1 To .Rows.Count
            For x = 1 To .Columns.Count
                thisRange.Cells(y, x).Value = "Formula here"
            Next x
        Next
    End With
End Sub

しかし、あなたが望むものは異なるかもしれません。より具体的に言えますか?

于 2013-07-29T20:29:38.790 に答える
1

以下は、あなたがする必要があることを達成します。startRow、、.Sheets("Name")およびi引数を指定するだけです。列がすべて同じ長さのUsedRange場合、関心のある列の外側と下に値を持つランダムなセルがない場合は正常に機能します。それ以外の場合は、コードでこれを試してください (ワークブックの使い捨てコピーで)。

Sub GetLastRowInColumn()

Dim ws as Excel.Worksheet
Set ws = Activeworkbook.Sheets("YOURSHEETNAMEHERE")

Dim startRow as long
    startRow = 1

Dim lastRow as long

Dim i as long    
For i = 1 to 12 'Column 1 to Column 12 (Adjust Accordingly)

    lRow = ws.Cells(ws.Rows.Count, i).End(xlUp).Row  
    ws.Range(ws.Cells(startRow, i), ws.Cells(lRow, i)).Formula = "=Max(1)"  'Sample Formula

Next


End Sub
于 2013-07-29T20:47:18.053 に答える
1

編集:タイプミスを修正

以下の関数は、可変長の列で範囲を構築します。関数を使用して目的の範囲を返し、関連するすべてのセルを 1 回で入力します。

Function GetVariantColumnRange(MySheet As Excel.Worksheet, _
      TopRow As Long, StartColumn As Long, LastColumn As Long) As Excel.Range

Dim topAddress As String
Dim bottomAddress As String

Dim addressString As String

Dim i As Long
For i = StartColumn To LastColumn

     topAddress = MySheet.Cells(TopRow, i).Address
     bottomAddress = MySheet.Cells(MySheet.Rows.Count, i).End(xlUp).Address
     addressString = addressString & ", " & topAddress & ":" & bottomAddress

Next

addressString = Right(addressString, Len(addressString) - _ 
                 InStr(1, addressString, ", ", vbBinaryCompare))

Set GetVariantColumnRange = MySheet.Range(addressString)

End Function

使用法は次のとおりです...

Sub Test()

Dim myrange As Range
Set myrange = GetVariantColumnRange(ThisWorkbook.Sheets(1), 1, 1, 12)

myrange.Select 'Just a visual aid.  Remove from final code.
myrange.Formula = "=APF($Jxx, "string1", "string2") "

End Sub
于 2013-07-30T14:41:01.370 に答える