如何vba将一个值放在相邻列中以获得特定值

Posted

技术标签:

【中文标题】如何vba将一个值放在相邻列中以获得特定值【英文标题】:how to vba put a value in adjacent columns for a specific value 【发布时间】:2015-05-08 05:42:11 【问题描述】:

当我提到 Dim 时,我并不是指函数中的 Dim,我的意思是像 car、bus 等任何随机词一样

我需要能够更改包含某个单词的列左侧偏移的单元格的值。例如在 COLUMNS CD 中,以便 B 列中具有 Dim 的每个 cel 都需要运行上述子程序以快速将零更改为 1,然后立即再次将它们改回

我需要它来引用 E1 中的 DIM:即如果 B 列有 E1

    B    D    E
  1 dim   0    Dim
    dim   0
    car   0
    car   0
    dim   0
    car   0

我在这里找到了这个:上面写着''http://www.quepublishing.com/articles/article.aspx?p=2021718&seqNum=8 假设您在 A 列中有一个农产品列表,在 B 列中它们旁边有总数。如果您想找到任何等于零的总数并将 LOW 放在它旁边的单元格中,请执行以下操作:' '

Set Rng = Range("B1:B16").Find(What:="0", LookAt:=xlWhole,        LookIn:=xlValues)
Rng.Offset(, 1).Value = "LOW"

虽然我需要它的设置略有不同,但不是从 A 引用 A 列或 B 列,而是指非相邻列。即检查 D:D 是否有 Dim 然后将 1 放入列 C:C 偏移到列 D:D 的任何单元格中 然后使用sleep(1) 将其改回零

当然,这可以根据我的需要进行调整。

我在下面的尝试

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
sub pump_onall()

 Set Rng = Range("B1:B16").Find(What:="Dim", LookAt:=xlWhole,          LookIn:=xlValues)
Rng.Offset(0, 1).Value = 1
sleep(1)
Rng.Offset(0,1).Value = 0
End sub

我在设置的 Rng 行上得到错误

Sub pump_onall()

Set Rng = Sheets("Account Details    --->").Range("DH1:DH50").Value.Find(What:="DQ3", LookAt:=xlWhole,   LookIn:=xlValues)
Rng.Offset(0, -7).Value = 1
Sleep (1)
Rng.Offset(0, -7).Value = 0
End Sub

这肯定行得通

Sub pump_onall()

Sheets("Account Details --->").Range("DH1:DH50").Value.Find(What:="DQ3",  LookAt:=xlWhole, LookIn:=xlValues)
Sheets("Account Details --->").Range("DH1:DH50").Offset(0, -7).Value = 1
Sleep (1)
Sheets("Account Details --->").Range("DH1:DH50").Offset(0, -7).Value = 0
End Sub

请帮助这应该很容易

响应genepose我尝试运行子 但是在 else 之后就出现了错误 对于下面

Sub pump_on()
LastRowDH = Cells(Rows.Count, 50).End(xlUp).Row
For i = 3 To LastRowDH
If Cells(i, 50) = "DQ3" Then
Cells(i, -7) = 1
Application.Wait (Now + 0.000001)
Cells(i, -7) = 0
Else
Cells(i, -7) = 0
End If
Next i
End Sub

我在上面放“DQ3”的地方我认为如果这引用了单元格 DQ3 会起作用吗?

我试过了

Sub pump_on7()
With ThisWorkbook.Sheets("Open Positions --->")
LastRowDH = .Cells(Rows.Count, 50).End(xlUp).Row
For i = 3 To LastRowDH
    If .Cells(i, 50) = Sheets("Open Positions --->").Range("DQ3").Value Then
        .Cells(i, -7) = 1
        Application.Wait Now + TimeValue("0:00:01")
        .Cells(i, -7) = 0
    Else
        .Cells(i, 32) = 0
    End If
Next i

结束于 结束子

运气不好

【问题讨论】:

再次...?重复号码 3..***.com/questions/28898567/… 或重复***.com/questions/28896954/… 【参考方案1】:

我不确定这是你想要的,但是......

With ThisWorkbook.Sheets("YourSheetName")
    LastRowC = .Cells(Rows.Count, 3).End(xlup).row
    For i = 1 To LastRowC
        If .Cells(i, 3) = "dim" Then
            .Cells(i, 4) = 1
            Application.Wait Now + TimeValue("0:00:01")
            .Cells(i, 4) = 0
        Else
            .Cells(i, 4) = 0
        End If
    Next i
End With

【讨论】:

是的,也许。你能不能不放 cells(i,4).value = 1 或者使用范围而不是单元格,并在每个 IF 之后休眠。或者不要在 else 中引用同一个单元格 对不起,我真的不明白你需要什么。 (可能是因为我不太会说英语)。你能简单解释一下你期望的结果吗? 你会把它作为一个子运行吗?我不确定它会起作用,因为我需要那些 1 很快恢复到 0。如果该函数运行两次,它可能会起作用,因为一旦单元格变为 1,将不再有任何暗淡 是的,代码在子目录中工作。你能解释一下你的目标吗? 所以基本上一旦单元格变为 1,理论上昏暗会消失,因为它们链接到另一个函数,在这种情况下,如果子运行两次以将它们恢复为 0,这将起作用再次。那么问题来了,我能以多快的速度运行潜艇两次。这样做可能效率低下。哦,等等,我需要再考虑一下

以上是关于如何vba将一个值放在相邻列中以获得特定值的主要内容,如果未能解决你的问题,请参考以下文章

将“delta”列添加到矩阵中,包含每个相邻列中元素之间的差异值?

PostgreSQL:如何将多行的值放在不同的列中,并将所有值合并到一行中?

如何对特定列中具有相同值的行求和

VBA 代码填充 7 个相邻单元格中的索引匹配函数

Excel VBA:用相邻的单元格值填充空单元格

Power Query:当特定值出现在另一列中时如何将一个添加到列中