2013-04-03 33 views
-1

我试着做'下一个细胞',但没有骰子。我试图从G2开始,然后将结果转储到另一个工作表中。接下来没有错误

For Each cell In Range("G2").End(xlDown) 
    If cell.Value = "New York" Then 
    ActiveCell.Offset(0, -2).Select 
    ReDim partnerArray(0 To i) 
     partnerArray(i) = ActiveCell.Offset(0, -2).Value 

Next 
ActiveWorkbook.Worksheets ("By Resource Level") 
    Range("A1").Value = partnerArray 
+0

这里显示的代码有一个内部的IF语句FOR循环,但IF语句没有End If。如果这不是真正的代码,那么请修复这个例子。还有可能将这个问题编辑成一个实际的问题? –

回答

0

编译器有时会显示不是错误的真正原因的错误消息。在这种情况下,你不闭上你的if语句:

For Each cell In Range("G2").End(xlDown) 
    If cell.Value = "New York" Then 
     ActiveCell.Offset(0, -2).Select 
     ReDim partnerArray(0 To i) 
     partnerArray(i) = ActiveCell.Offset(0, -2).Value 
    Endif 

Next 
ActiveWorkbook.Worksheets ("By Resource Level") 
    Range("A1").Value = partnerArray 
+0

啊。说得通。任何想法为什么我会在范围(“A1”)得到一个不匹配的错误。Value = partnerArray ?? – STANGMMX

+0

另外,如果您在Dim中删除(),则会出现内存不足错误。 – STANGMMX

1

末(xlDown)进入到最后一个单元格的范围内,因为如果你点击ctrl down,这样你就永远只能捡一个值的码。

至于partnerArray给人一种不匹配错误,这是因为你正试图把一组数据到一个单元格,而不是指定一个下标即partnerArray(0)

如果你想所有的结果,你将需要循环通过数组并输入每个结果到不同的单元格。我会告诉你很快

编辑的代码示例:

For Each cell In Range("G2:G10").Cells 
    If cell.Value = "New York" Then 
     ReDim Preserve partnerArray(i) 
     cell.Select 
     partnerArray(i) = ActiveCell.Offset(0, -2).Value 
     i = i + 1 
    End If 
Next 

On Error Resume Next 

For i = LBound(partnerArray) To UBound(partnerArray) 
    ActiveWorkbook.Worksheets("By Resource Level").Cells(i + 1, 1).Value = partnerArray(i) 
Next i 
+0

@STANGMMX,史蒂文的回答比我的完整得多(我只是想回答你最初的问题)。去这个,请让我们知道它是如何工作的。 – PowerUser

+0

道歉,我超出了这个问题,但希望这将解决您遇到的任何其他问题。感谢编辑PU –

+0

实际上,这不会打印到新创建的工作表中,以供某些反应。 – STANGMMX

0

你缺少一个End If之前你Next