首页 > 解决方案 > 验证一系列行和列中的值并更新其上的一些值

问题描述

如何让 VBA 验证您在范围或列中的值?

例如,您的范围为 A1 - A10,其值为:

猫,猫,狗,狗,狗,狗,狗,猫,猫,狗。

所以它在excel中看起来像这样: 在此处输入图像描述

现在我希望这个逻辑是,当有三只连续的狗时,第三只狗变成老鼠,当前一只是老鼠时,下一只狗将被更新为牛。等2。无论 10 个单元格的排列或模式如何,我都有这个逻辑。所以基本上它会在之后显示如下: 在此处输入图像描述

任何对此有想法的人?

非常感谢!

标签: excelvba

解决方案


这就是我会做的。

创建一个数组:Dim varData(1 To 10) As Variant

然后,将值分配给数组中的位置。

varData(1) = Cells(2,1)
varData(2) = Cells(2,2) 继续前进,直到达到最后一个值。如果您愿意,可以在 for 循环中执行此操作。

然后,在 for 循环中执行 If 语句:

For i = 1 to 10
   If varData(i) = "dog" Then
       counter = counter + 1
       If counter = 3 Then
          varData(i) = "Mouse"
          Cells(2,i) = "Mouse"
       End If
       If varData(i-1) = "Mouse" Then
          varData(i) = "Cow"
          Cells(2,i) = "Cow"
   Else
       counter = 0
   End If
Next i 

希望这可以帮助。询问您是否需要任何问题。

一条评论要求添加代码

使用此处找到的 RND 函数

类似: ''' testNum = int(Rnd(1)) '''' 这会给你一个介于 0 和 1 之间的数字。

然后使用 if else 语句...

For i = 1 to 10
    If testNum = 0 Then
        Cells(2,i) = "Dog"
    Else
        Cells(2,i) = "Cat"
    If varData(i) = "dog" Then
       counter = counter + 1
       If counter = 3 Then
          varData(i) = "Mouse"
          Cells(2,i) = "Mouse"
       End If
       If varData(i-1) = "Mouse" Then
          varData(i) = "Cow"
          Cells(2,i) = "Cow"
   Else
       counter = 0
   End If

我确信有更好的方法来做到这一点,但这是一个基本的想法。

威比编码


推荐阅读