首页 > 解决方案 > 为特定工作表转换特定列中的公式

问题描述

我试图让我的宏插入一个公式,然后将其计算转换为仅用于 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

标签: excelvba

解决方案


如果你稍微调整你的代码,你可以获得你想要的结果。以下内容已经过测试,并且适用于我,使用一个简单的公式来测试转换为值。

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

推荐阅读