Excel 在这种情况下,使用do-while循环是否有助于提高效率?

Excel 在这种情况下,使用do-while循环是否有助于提高效率?,excel,vba,Excel,Vba,我试图制作一个程序,例如,如果在a列中找到设备V,它会将设备V旁边的单元命名为电压。其他设备也是如此。目前,我正在使用if和for循环,我想在这种情况下,当有3个设备时,它工作得很好。然而,在假设有100台设备的情况下,我意识到我必须复制和粘贴代码,然后编辑100次,这可能是一个乏味的过程。所以我在想,使用Do-while循环是否有助于提高效率,还是有其他更好的方法 编辑:也可能是这样一种情况:假设我已经在另一张工作表上有一个设备列表及其相应的备选名称(顺序不同,例如可以是第三行的设备V和电压,

我试图制作一个程序,例如,如果在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"))