分别完整地循环两列

分别完整地循环两列

相关问题在这里

我有两列不同长度的列。

在下面的 Do While 循环中,

Do While main.Offset(i, 0).Value <> "" Or main.Offset(i, 1).Value <> ""

使用 OR 会生成大量不相关的数据(例如 Sheet2 中的名称/标签不匹配),因此我将其更改为 AND,只有当两列都以同一行结尾时它才能完美运行。(虽然有重复,但它们不是我现在主要关心的问题)

Do While main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value <> ""

但是使用逻辑运算符“And”,它会在中途停止(如果其中一列比另一列短。有没有专家可以解释一下如何获取数据,即使一列比另一列短?

我尝试在两个语句之间添加括号,将其中一列放在另一张表中,或者创建嵌套的 do while 循环,数据仍然保持不变。我也尝试了下面的代码,但它给出了 Sheet2 中所有不相关的数据,如“Ken、summer、wendy”。

Do While (main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value <> "") Or (main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value = "")

所以我想知道我可以用什么来代替 And 运算符并给出正确的结果?

啊这是 Xsheet、Sheet1、Sheet2。
我无法发布超过 2 张图片,因此我将它们全部放在一张中。如上图所示,Belle 在 Xsheet 中,也是一个活跃的案例。因此 3355 应该在 Sheet2 中。另一个缺陷是 4987 有重复。

*添加了最新截图

我是编程新手,如果我犯了不必要的错误,我深表歉意。感谢您的任何建议。

答案1

我认为,您的 do-while 循环不符合您的需求 - 无论是使用 还是ORAND据我了解,您可以依次处理 XSheet 中的两列。对我来说,A 列和 B 列中的数据是独立的。

因此,首先检查名称是否在 Sheet1 的 E 列中,然后将数据复制到 Sheet2。之后检查描述是否在 Sheet1 的 F 列中,然后复制数据。

但在插入“description”列中的数据之前,您必须检查是否已复制这些行。因此,如果您在 desc 中找到了匹配项,则获取 A 列的“code”并检查它是否已在 Sheet2 中。如果是,则您什么也不做,否则您将复制数据。

当然,您始终要检查您的命中是否处于“活跃”状态。

编辑:do-while 循环本身是正确的。但ANDor条件OR不是必需的。因此上述检查都是

Do While main.Offset(i, 0).Value <> ""

分别针对 D 列和 E 列。

相关内容