在我的工作表中,一些单元格值基于其他单元格
Info worksheet
A1: 5
B1: =A1
Design worksheet
A1:
有没有办法复制和读取B1中的值?我试图在for循环中使用该值,但没有运气。
Sheets("Info").Select
For i = 1 to 5
If Range("B" & i).Value <> 0 Then
Range("B" & i).Copy Destination:=Sheets("Design").Range("A" & x)
'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
x = x + 1
End If
Next i
答案 0 :(得分:0)
您的示例似乎与代码不匹配。这条线
If Range("B" & i).Value = 1 Then
表示在您的示例中不会复制任何内容。它正在寻找一个包含1的单元格。为什么你需要If
声明?
编辑我猜你只是在检查单元格中有什么要复制的?我可能会这样做:
If Trim(Range("B" & i).Value) <> "" Then
另外 - 你错过了设置x=1
吗?
答案 1 :(得分:0)
有多种方法可以做到这一点。其中一个是使用'offset',这是一个非常值得理解的功能。它基本上指向原始单元格中的行/列数量。
Sub test()
Dim oCell As Excel.Range
Dim i As Integer
Dim x As Integer
Set oCell = Sheets("Info").Range("B1")
x = 1
For i = 1 To 5
If oCell.Offset(i, 0).Value = 1 Then
oCell.Offset(i, 0).Copy Destination:=Sheets("Design").Range("A" & x)
x = x + 1
End If
Next i
End Sub
此外,您可以断言值而不是使用copy属性。注意它不起作用,除非x是一个整数&gt; 0
Sub test2()
Sheets(3).Select
x = 1
For i = 1 To 5
If Range("B" & i).Value = 1 Then
Sheets(4).Range("A" & x).Value = Range("B" & i).Value
'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
x = x + 1
End If
Next i
End Sub