我在工作中进行了废物计算练习,并且我有几个动态命名范围,其单元格都包含由公式到达的值。我需要一个模块,它将动态命名范围内的值复制到另一个工作表而不复制公式本身,只复制单元格包含的值。我试着用这个:
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而言,我相当新手,所以请轻松一点!
答案 0 :(得分: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
答案 1 :(得分:0)
尝试仅粘贴值:
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
答案 2 :(得分:0)
或类似的东西
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捕获错误,这将是静态的虽然