如何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 C
和 D
中,以便 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”列添加到矩阵中,包含每个相邻列中元素之间的差异值?