如果那么 else 或者如果那么 elseif vba?

If then else or if then elseif vba?

我正在尝试从 SQL 过程将以下逻辑添加到 Excel 中的宏,但在转换它时遇到问题:

CASE WHEN Dept < '600' THEN '0' + convert(varchar,RTRIM(Dept)) 
when Dept between '650' and '899'  THEN convert(varchar,RTRIM(Dept)) + '0'
ELSE convert(varchar,RTRIM(Dept)) + '0' END As Dept_Num

我想要的显示是这样的:

如您所见,我在多重条件的概念上苦苦挣扎,这是我第一次写这样的声明...感谢任何帮助!

看来您只是缺少几个关键字。此外,按照以下方式对其进行格式化将使这一点更加明显:

Dim deptnum As Integer, result As String
deptnum = Range("Table1[Dept1]").Value
If deptnum < 600 Then 
    deptnum = Left(Range("Table1[Dept1]") & "0000", 4)
Else 
    deptnum = Right(Range("Table1[Dept1]") & "0000", 4)
End If
Dim varcell as Variant

For Each varcell in ThisWorkbook.Sheets("DeptData").ListObjects(1).ListColumns(8).DataBodyRange
   If varcell.value < 600 Then
      varcell.value = "0" & cstr(varcell.value)
   Else
      varcell.value = cstr(varcell.value) & "0"
   End If
Next

请注意,我们需要更新 ' 所在的点。

    Sub Testdeptnum()

Dim deptnum As Integer
Dim result As String
Dim deptrng As Range
Dim SourceSheet As Worksheet
Set SourceSheet = ThisWorkbook.Sheets("Data")
Set deptrng = SourceSheet.Range("DEPT1")
For Each c In deptrng.Cells
    If c.Value < 600 Then
        deptnum = c.Value
        result = "0" & deptnum
        SourceSheet.Cells(c.Row, 2).NumberFormat = "00##"
        SourceSheet.Cells(c.Row, 2).Value = result
    ElseIf c.Value > 650 And c.Value < 899 Then
        deptnum = c.Value
        result = deptnum & "0"
        SourceSheet.Cells(c.Row, 2).NumberFormat = "00##"
        SourceSheet.Cells(c.Row, 2).Value = result
    Else
        deptnum = c.Value
        result = deptnum & "0"
        SourceSheet.Cells(c.Row, 2).NumberFormat = "00##"
        SourceSheet.Cells(c.Row, 2).Value = result
    End If
Next c
End Sub

我不完全确定您的 Table1 数据的格式是什么,因此我不能真正确定它需要定位什么格式等。

要点是:您需要遍历单元格,而不是范围。 range.value 不能 return 每个单元格的值,它将 return 一个值。为了评估一个范围内每个单元格的单独值,您必须在一个循环中遍历该范围(我使用了 For Each)。

请记住,您的结果可能会因 workbook/data 的格式而异。这里我的 "Table1" 被假定为名为 "Data" 的工作表,您可以将其替换为你需要。如果 Table1 是您的工作簿或文件名,则根本不需要包含它,除非您还在同一个 function/module 中与另一个 file/workbook 进行交互。