Excel 在这种情况下,使用do-while循环是否有助于提高效率?
我试图制作一个程序,例如,如果在a列中找到设备V,它会将设备V旁边的单元命名为电压。其他设备也是如此。目前,我正在使用if和for循环,我想在这种情况下,当有3个设备时,它工作得很好。然而,在假设有100台设备的情况下,我意识到我必须复制和粘贴代码,然后编辑100次,这可能是一个乏味的过程。所以我在想,使用Do-while循环是否有助于提高效率,还是有其他更好的方法 编辑:也可能是这样一种情况:假设我已经在另一张工作表上有一个设备列表及其相应的备选名称(顺序不同,例如可以是第三行的设备V和电压,而不是第一行),我不确定如何使用它,而不必像我在代码中那样命名它 以前 在运行程序之后Excel 在这种情况下,使用do-while循环是否有助于提高效率?,excel,vba,Excel,Vba,我试图制作一个程序,例如,如果在a列中找到设备V,它会将设备V旁边的单元命名为电压。其他设备也是如此。目前,我正在使用if和for循环,我想在这种情况下,当有3个设备时,它工作得很好。然而,在假设有100台设备的情况下,我意识到我必须复制和粘贴代码,然后编辑100次,这可能是一个乏味的过程。所以我在想,使用Do-while循环是否有助于提高效率,还是有其他更好的方法 编辑:也可能是这样一种情况:假设我已经在另一张工作表上有一个设备列表及其相应的备选名称(顺序不同,例如可以是第三行的设备V和电压,
要使用字典执行此操作(必须添加对Microsoft.Scripting.Runtime的引用):
您可以使用以下公式轻松完成此操作:
=IF(A:A="device V";"voltage";IF(A:A="device k";"Kelvin";"Fahrenheit"))
使用range
A:A
可确保您可以在列中的任何位置使用此公式。是否有可能将查找值放在另一张表中?你可以很容易地用vlookup做到这一点。它也很容易维护。如果你想使用VBA,我会查看VBA字典类。@Kevin对不起,我没有解释清楚,所以我贴了程序输出前后的图片。但最终我尝试用VBA的方式来做。那么如何使用VBA字典呢?完全同意@Kevin的观点,创建第二页,在A列列出设备列表,在B列列出设备列表,编写Scripting.Dictionary
,然后在主工作表中使用.Exists
方法检查名称是否存在于Dictionary中,然后使用.Item
从Dictionary中获取值-单位。@Teamothy我明白了,假设我在另一张工作表上已经有了一个设备名及其对应名称的列表。这仍然适用吗?我添加了一个如何使用字典的示例。我仍然强烈建议将字典存储在另一个工作表中并动态加载它。
Sub Macro1()
Dim dict As Scripting.Dictionary
Dim lastrowt As Long
Dim t As Long
Dim ws1 As Worksheet
Dim key As String
Set ws1 = Sheets(1)
Set dict = New Scripting.Dictionary
lastrowt = ws1.Range("T" & Rows.Count).End(xlUp).Row
dict.Add "device V", "Voltage"
dict.Add "device F", "Faraday"
dict.Add "device K", "Kelvin"
For t = 1 To lastrowt
key = ws1.Range("A" & t)
If dict.Exists(key) Then
ws1.Range("B" & t) = dict(key)
End If
Next
End Sub
=IF(A:A="device V";"voltage";IF(A:A="device k";"Kelvin";"Fahrenheit"))