首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >始终在特定字符串后面打印6位数字

始终在特定字符串后面打印6位数字
EN

Stack Overflow用户
提问于 2015-06-30 16:49:29
回答 6查看 328关注 0票数 2

我有许多字符串,名称为"TL-“,后面跟着6位数字(即TL-000456,TL-000598)。有时,它会打印出少于6位数字(即TL-09872,TL-345,TL-02).

我希望我的代码在"TL-“之后添加一个零,直到它包含6位数。

代码语言:javascript
复制
Start:           Output:
TL-000456   ->   TL-000456
TL-000598   ->   TL-000598
TL-09872    ->   TL-009872
TL-345      ->   TL-000345
TL-02       ->   TL-000002

如果可能的话,我希望这样做,这样即使在字符串中包含一个空格(即"TL - ","TL -"),也总是会抓取6位数字。

代码语言:javascript
复制
TL - 987    ->   TL-000987
TL- 839     ->   TL-000839

我的代码中有一个函数,它对"TL“值进行修整,以便在分号或逗号之前得到所有内容,因此理想情况下,代码应该放在那里。有什么想法?

当前的尝试给出评论:

代码从ws (工作表)中的头“切削工具”下获取值,并将其打印到StartSht (带有代码的工作簿)中。

(1)在有效的过程或参数中返回Trim行上的错误

代码语言:javascript
复制
With WB
  For Each ws In .Worksheets

Dim sIn, sOut As String
    'find CUTTING TOOL on the source sheet
    If Not ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues) Is Nothing Then
    Set hc = ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues)
        Set dict = GetValues(hc.Offset(1, 0), "SplitMe")
        If dict.count > 0 Then
        'add the values to the workbook, column 3
            Set d = StartSht.Cells(Rows.count, hc2.Column).End(xlUp).Offset(1, 0)
            d.Resize(dict.count, 1).Value = Application.Transpose(dict.items)


            'trim values **implement new code here**
            With StartSht
                Trim (Left(sIn, InStr(1, sIn, "-", vbTextCompare) - 1)) & "-" & Right("000000" & Trim(Right(sIn, Len(sIn) - InStr(1, sIn, "-", vbTextCompare))), 6)
            End With

(2)完全运行,但不改变值。

代码语言:javascript
复制
With WB
  For Each ws In .Worksheets
        'find CUTTING TOOL on the source sheet
        If Not ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues) Is Nothing Then
        Set hc = ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues)
            Set dict = GetValues(hc.Offset(1, 0), "SplitMe")
            If dict.count > 0 Then
            'add the values to the master list, column 3
                Set d = StartSht.Cells(Rows.count, hc2.Column).End(xlUp).Offset(1, 0)
                d.Resize(dict.count, 1).Value = Application.Transpose(dict.items)

                Dim str As String, ret As String, tmp As String, j As Integer
                With StartSht
                For j = 1 To Len(str)
                    tmp = Mid(str, j, 1)
                    If IsNumeric(tmp) Then ret = ret + tmp
                Next j

                For j = Len(ret) + 1 To 6
                    ret = "0" & ret
                Next

                Debug.Print ret


                End With

StartSht Excel文档如下所示

代码语言:javascript
复制
      A            B                C                  D
1    TDS        HOLDER        CUTTING TOOL        File Name
2   TDS-1         H1            TL-000289          TDS-1.xlsx
3   TDS-2         H2            TL-000274          TDS-2.xlsx
4   TDS-3         H3            TL-0002            TDS-3.xlsx
5   TDS-4         H4            TL-0343            TDS-4.xlsx

在下面的“切削工具”代码之后,它看起来就像代码下面的输出,因为这是我获取信息的第一部分。

代码:

代码语言:javascript
复制
            With WB
                For Each ws In .Worksheets
                'find CUTTING TOOL on the source sheet
                If Not ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues) Is Nothing Then
                Set hc = ws.Range("A1:M15").Find(What:="CUTTING TOOL", LookAt:=xlWhole, LookIn:=xlValues)
                    Set dict = GetValues(hc.Offset(1, 0), "SplitMe")
                    If dict.count > 0 Then
                    'add the values to the master list, column 3
                        Set d = StartSht.Cells(Rows.count, hc2.Column).End(xlUp).Offset(1, 0)
                        d.Resize(dict.count, 1).Value = Application.Transpose(dict.items)

StartSht的输出:

代码语言:javascript
复制
      A            B                C                  D
1    TDS        HOLDER        CUTTING TOOL        File Name
2                              TL-000289          
3                              TL-000274          
4                              TL-0002            
5                              TL-0343     

我想添加一行str =StartSht.Range(‘在这里设置正确的范围’),然后编写代码,使StartSht看起来像这样

代码语言:javascript
复制
      A            B                C                  D
1    TDS        HOLDER        CUTTING TOOL        File Name
2                              TL-000289          
3                              TL-000274          
4                              TL-000002            
5                              TL-000343     
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-06-30 17:07:48

在Orphid‘Expanding上扩展到包括以下6位数:

代码语言:javascript
复制
Sub Test()
    Dim str as string, ret as string, tmp as string, i as integer, j as integer

    for j = 2 to StartSht.Range("C2").End(xlDown).Row            
        ret = ""
        str = StartSht.Range("C" & j).Value
            for i = 1 to len(str)
                  tmp = mid(str, i, 1)
                  if IsNumeric(tmp) then ret = ret + tmp
            next i

            For i = Len(ret) + 1 To 6
                ret = "0" & ret
            Next
            ret = "TL-" & ret
            StartSht.Range("C" & j).Value = ret
    next j
End Sub

这将在原B列旁边写上“ret”。您正在处理的工作表在运行时需要是活动的,因为如您所见,我没有指定要使用哪个工作表。如果有必要的话,你可以自己做。我以为它只需要在1张工作表上完成,1张工作簿就可以了。如果我错了请告诉我。

票数 2
EN

Stack Overflow用户

发布于 2015-06-30 17:19:58

有一种使用excel公式的方法:

代码语言:javascript
复制
="TL-" & TEXT(TRIM(RIGHT(A1,LEN(A1)-FIND("-",A1,1))),"000000")
票数 3
EN

Stack Overflow用户

发布于 2015-06-30 17:13:31

到目前为止你试过什么?你有什么密码给我们看吗?

这应该是一个起点,当然,您需要去掉空格并循环遍历整个文件。

代码语言:javascript
复制
Public Sub PaddingTest()
Dim PaddingArray() As String
Dim PaddingVar As String
PaddingArray() = Split(Range("A1").Value, "-", 2, vbTextCompare)
PaddingVar = PaddingArray(1)
While Len(PaddingVar) < 6
    PaddingVar = "0" & PaddingVar
Wend
Range("A2").Value = PaddingArray(0) & "-" & PaddingVar
End Sub

用于使用拆分命令的msdn.microsoft.com

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31143964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档