我想让我的宏插入一个公式,然后将其计算结果转换为仅适用于A列的值。
它似乎可以在Sheet3上工作,但是完全忽略了sheet2
Private Sub FillRows2()
'
Sheets("Sheet2").Range("A14:A" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet3").Range("A8:A" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If sh.name = "Sheet2" Or sh.name = "Sheet3" Then
With Range(Range("A1"), Range("J" & Rows.Count).End(xlUp))
.Value2 = .Value2
End With
End If
Next sh
Sheets("Sheet2").Range("B14:B" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet3").Range("B8:B" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
'
Sheets("Sheet2").Range("G14:G" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet3").Range("G8:G" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
End Sub
如果稍微调整代码,就可以达到你想要的结果。以下内容已经过测试,可以使用一个简单的公式来测试对我的转换,以测试对值的转换。
Option Explicit
Sub FillRows2()
Sheets("Sheet2").Range("A14:A" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "=5*5"
Sheets("Sheet3").Range("A8:A" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "=5*5"
Dim sh As Worksheet
For Each sh In Sheets(Array("Sheet2", "Sheet3"))
With sh.Range("A1:A" & sh.Range("A" & Rows.Count).End(xlUp).Row)
.Value = .Value
End With
Next sh
Sheets("Sheet2").Range("B14:B" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet3").Range("B8:B" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet2").Range("G14:G" & Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
Sheets("Sheet3").Range("G8:G" & Sheets("Sheet3").Range("J" & Rows.Count).End(xlUp).Row).Formula = "Formula here"
End Sub