【问题标题】:VBA Copy column and paste formulas only - not values - to next columnVBA 仅复制列并粘贴公式 - 而不是值 - 到下一列
【发布时间】:2017-05-18 14:59:08
【问题描述】:

VBA 仅复制列并将公式(而非值)粘贴到下一列

电子表格列 B 包含随机混合的值和公式。我想使用 VBA 将该列复制到下一列,并且只将公式(而不是值)复制到 C 列中。我能够使用以下 VBA 取得一些成功,但是它将 B 之后的每一列复制到无穷大(我希望它在第一列之后停止复制)。

Sub Copy_Column_Formulas_NOvalues()
'
' Copy_Column_Formulas_NOvalues Macro
'
Dim oSheet As Worksheet
Dim rng As Range
Dim cel As Range
Set oSheet = Sheets("Sheet1")
With oSheet
    Set rng = .Range(.Range("B1"), .Range("B" & .Rows.Count).End(xlUp))
    For Each cel In rng
        If Left(cel.Formula, 1) = "=" Then
            Range(cel.Offset(, 1), cel.Offset(, 1).End(xlToRight)).FormulaR1C1 = cel.FormulaR1C1
            End If
    Next cel
End With
End Sub

【问题讨论】:

  • 删除.End(xlToRight)。其实把Range(cel.Offset(, 1), cel.Offset(, 1).End(xlToRight))改成cel.Offset(,1)

标签: vba excel


【解决方案1】:

试试这个简单的宏,让我知道它是否有效,

Sub Copy_Column_Formulas_NOvalues()
Dim i As Long, j As Long
For i = 1 To Sheets("Sheet3").Cells(Rows.Count, "B").End(xlUp).Row
If Cells(i, 2).HasFormula Then
   Cells(i, 3) = Cells(i, 2).Formula
End If
Next i
End Sub

根据您的需要更改 Sheet3 名称。

【讨论】:

  • 我将“Sheet3”更改为我的工作表名称。我将“B”更改为我想复制“W”的列(复制到“X”)并运行它。花了一段时间,但没有按要求复制。看起来它仍然将 B 复制到 C 中。
  • IF 条件仍然只检查 B 列的值。它应该在 W 列中搜索并将其粘贴到 X 中。相应地更改您的公式
  • 我将“Sheet3”更改为我的工作表名称。我将“B”更改为我想复制“W”的列(复制到“X”)并运行它。花了一段时间,但没有按要求复制。看起来它仍然将 B 复制到 C 中。所以我将“2”更改为列号“23”(即 W 列),将“3”更改为“24”(即 X 列)并且它工作了.. .. 需要一点时间,但做了我需要的!!!
  • @ssttuuky 太好了!!
  • if语句中可以用字母代替数字吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多