如何复制dynamic命名范围内的值?

我在做一个浪费的计算练习,我有几个dynamic的命名范围,其单元格都包含由公式得出的值。 我需要一个模块,将复制dynamic命名范围内的值到另一个工作表,而不复制公式本身,只是单元格中包含的值。 我试图用这个:

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 

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

另外,当谈到VBA时,我相当新手,所以轻松点!

尝试只粘贴值:

 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 

使用.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 

或者类似的东西

 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)并填充,也可以使用IFERROR来捕获错误,但这将是静态的。