【问题标题】:How to copy the values within a dynamic named range?如何复制动态命名范围内的值?
【发布时间】:2016-05-04 11:20:48
【问题描述】:

我在工作中进行了一项浪费计算练习,我有几个动态命名范围,其单元格都包含通过公式得出的值。我需要一个模块,它将动态命名范围内的值复制到另一张纸上,而不复制公式本身,只是单元格包含的值。我试着用这个:

Sub Sample()
    Dim wsI As Worksheet, wsO As Worksheet

    Set wsI = ThisWorkbook.Sheets("Sheet1")
    Set wsO = ThisWorkbook.Sheets("Sheet1")

    wsI.Range("Pct_waste").Copy wsO.Range("B4")

End Sub

但这复制了公式,这是没有用的。而且我不能只使用绝对引用,因为我需要能够快速添加新数据。最终,我打算创建一个宏,将动态命名范围内的值复制到新工作表中,然后对这些值进行数字排序并将它们绘制在散点图上。因此,我需要找到一种方法来复制动态命名范围中的所有值,而无需复制公式本身。

另外,我在 VBA 方面还是个新手,所以请放轻松!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用.Resize() 方法:

    Set wsI = ThisWorkbook.Sheets("Sheet1")
    Set wsO = ThisWorkbook.Sheets("Sheet1")
    
    With wsI.Range("Pct_waste")
        wsO.Range("B4").Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
    

    【讨论】:

      【解决方案2】:

      尝试仅粘贴值:

      Sub Sample() 
      
      Dim wsI As Worksheet, wsO As Worksheet
      
      Set wsI = ThisWorkbook.Sheets("Sheet1")
      Set wsO = ThisWorkbook.Sheets("Sheet1")
      
      wsI.Range("Pct_waste").Copy 
      wsO.Range("B4").PasteSpecial xlPasteValues
      
      End Sub
      

      【讨论】:

      • 为什么我没想到我不知道。非常感谢你,你是一个救生员!
      【解决方案3】:

      或类似的东西

      Sub test()
      
      Dim r As Excel.Range
      Dim i As Integer
      
      Set r = Range("test_range")
      
      For i = 1 To r.Cells.Count
          Range("x" & i).Value = r.Cells(i, 1).Value
      Next i
      
      End Sub
      

      或者你可以在工作表中做这样的静态公式 =index(range_name,rows($A$1:$A1),1) 并填写,也可以使用 IFERRROR 捕获错误,但这将是静态的.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多