【发布时间】:2014-12-23 08:34:28
【问题描述】:
我有来自A2:A34 的一系列数据,其中包含各种名称,我需要将其复制到E9:E14 范围内。我只需要复制和粘贴唯一的名称(我不需要同名的双精度)。我很确定使用嵌套的For Next 循环是可行的方法,但我无法让外循环进入下一次迭代。现在这只是给我在A2:A34 范围内的姓氏,在E9:14 中重复。我正在考虑使用Exit For,但是当我在代码中添加它时,外部循环迭代但内部循环从 2 开始。
对此的任何帮助将不胜感激。谢谢! 以下是我的代码:
Sub FillTable()
Dim tableCount As Integer
Dim rowCount As Integer
For tableCount = 9 To 13
If Range("E" & tableCount).Value = "" Then
For rowCount = 2 To 34
If Range("E" & tableCount).Value = Range("A" & rowCount).Value Then
ElseIf Range("E" & tableCount).Value <> Range("A" & rowCount).Value Then
Range("E" & tableCount).Value = Range("A" & rowCount).Value
End If
Next rowCount
End If
Next tableCount
End Sub
【问题讨论】:
-
看来您的数据将始终采用非常特定的格式,因为您知道要迭代的唯一值的确切数量。如果是这样,为什么不直接将列表复制到 E 列,然后使用“数据”菜单中内置的“删除重复项”?
-
如果没有一些样本数据,很难想象您正在尝试做什么。最简单的方法是一步一步(调试)并找出为什么它没有按照您的预期进行。例如,
IF可能没有按您的预期进行评估。 -
感谢您的回复。我一直在逐步进行,问题是一旦 ELSEIF 语句为真并且它复制了名字,它会迭代但外部循环不会。因此,一旦发生这种情况,For rowCount 下的第一个 if 语句将变为 true,并将第二个唯一名称粘贴到表的同一位置。
-
如果您只想在 A2:34 范围内搜索唯一值并将它们粘贴到旁边的 B 列中,部分代码会是什么样子?
标签: excel for-loop nested-loops vba