【问题标题】:Pad single-digit numbers with a zero用零填充个位数
【发布时间】:2015-10-16 04:32:16
【问题描述】:

我有一个像这样的循环将工作表保存为 CSV 文件,但我的前 9 个工作表的名称喜欢 sinani-01 ... sinani-09(不像 sinani-1 ... sinani-9)。如何在小于 10 的数字之前连接 0 only

Sub Adder()
    Dim animal As String
    Dim i As Integer
    For i = 1 To 120
        animal = "sinani-" & i
        Sheets(animal).SaveAs "E:\Data\CSV\" & animal & ".csv", xlCSV
    Next i
End Sub

【问题讨论】:

    标签: vba excel for-loop


    【解决方案1】:

    VBA 有一个Format() 函数,可用于填充数字。

    animal = "sinani-" & Format$(i, "00")
    

    这将用0 填充一位数字。您的两位数和三位数字将继续按预期工作。

    【讨论】:

      【解决方案2】:

      在第五行使用 Format 函数,如下所示:

      animal = "sinani-" & Format(i, "#00")
      

      # 表示可选的数字(即仅当i 中有那么多数字时才存在),0 绝对表示数字,如果i 没有足够的数字,则使用前导零.

      【讨论】:

        【解决方案3】:

        与一系列前导零连接,并根据需要从右侧剥离尽可能多的数字。

        animal = "sinani-" & Right("00" & i, 2)
        
        'alternate for many leading zeroes (e.g. DUNS number)
        animal = "sinani-" & Right(String(9, "0") & i, 9)
        

        【讨论】:

          【解决方案4】:

          & i 替换为& IIF(i < 10,"0","") & i

          编辑中:尽管在这种情况下Format 提供了比IIF 更简洁的解决方案,但IIF 技巧在调整输出方面还有其他用途。例如,如果您想告知用户找到了多少满足某些条件的单元格,您可以使用类似

          MsgBox n & "cell" & IIF(n <> 1,"s","") & " found"
          

          优雅地处理复数和单数结尾

          【讨论】:

            猜你喜欢
            • 2021-12-12
            • 2022-01-23
            • 1970-01-01
            • 2017-10-24
            • 2019-03-21
            • 1970-01-01
            • 2016-11-06
            • 2019-03-15
            相关资源
            最近更新 更多