比较两个字母数字房间号码以确定楼层前缀

问题描述 投票:-3回答:1

我一直致力于一个工作项目,我根据范围创建房间列表,即1-3,5在另一张工作表的新行中返回1,2,3,5。我甚至能够从另一个单元格读取另一组范围并将其与双打进行比较。所以第二个单元格是1-3,列表是1A,1B,2A,2B,3A,3B,5A。下一步是比较第一个范围中的数字以确定前缀和后缀,将它们分配给变量,删除它们,进行比较并在写入行时重新插入它们。范围的一个很好的例子是5N01-5N05将需要返回5n01,5n02,5n03,5n04,5n05。范围的另一个例子是10011-X-10015-x需要返回10011-x,10012-x 10013-x,10014-x,10015-x

任何帮助,将不胜感激。我见过的例子只是拆分了所有的文字和数字,但没有存储数字在我的头脑中我需要写一个抓住前两个数字的公式,从左边开始,记下它所比较的​​位置和去在线下直到达到一个唯一值。可以反馈该位置以读取第一个多个字符,并在输入范围公式之前删除它们,然后在写入列表时重新插入。从确定后缀的权利开始也是如此,所以在最后一个房间列表中它会去

(10011-x - 10015-x)

  • 最左边的字符1是1,匹配第一个位置,移动到下一个
  • 下一个字符2为0,匹配第二个位置,移动到下一个
  • 下一个字符3为0,匹配第三个位置,移至下一个
  • 下一个字符4为1,匹配第四个位置,移动到下一个 - 下一个字符5为1,不匹配两个第五个位置,停止
  • 前缀=第一个数字的字符1-4,1001
  • 最右边的字符7是x,匹配第7个位置,移动到下一个 - 下一个字符6是“ - ”,匹配第6个位置,移动到下一个
  • 下一个字符5为1,与第5个位置不匹配,停止
  • suffix =第一个数字的字符6-7,-x

这就是我需要帮助的地方。从那里我可以设法在删除前缀和后缀后提取真实范围1-5并在结尾处填充它们在列表中。

excel vba range comparison match
1个回答
0
投票

对不起,广泛。只是在这个文档上有很多移动的部分我创建了一些代码来比较条目并吐出房间号码的前缀和后缀。下一步是把它合并到我的另一个Sub中,它可以读取像(1-5,7,9)这样的范围我希望它能够读取(3N01-X-3N05-X,3N07-X)并且我认为下面的比较Sub我更接近了。当我发布一个新问题时,我会尝试更直接地回答我的下一个问题,但这已经得到了解答

    Sub Prefix()
Sheet7.Range("B1").Select

Dim Entry1 As String
Dim Entry2 As String

Dim currentCharacter As String
Dim currentCharacter2 As String
Dim pCount As Integer
Dim pCurrent As String
Dim Prefix As String
Dim pArray(1 To 10) As String
Dim sCount As Integer
Dim sCurrent As String
Dim Suffix As String
Dim sArray(1 To 10) As String


Entry1 = ActiveSheet.Cells.Range("B" & ActiveCell.Row).Value
Entry2 = ActiveSheet.Cells.Range("C" & ActiveCell.Row).Value

    For pCount = 1 To Len(Entry1)

        currentCharacter = Mid(Entry1, pCount, 1)
        currentCharacter2 = Mid(Entry2, pCount, 1)

        If currentCharacter = currentCharacter2 Then

         pArray(pCount) = currentCharacter

            NextRow2 = Sheet7.Cells(Rows.Count, "G").End(xlUp).Row + 1
           Sheet7.Cells(NextRow2, "G") = currentCharacter
         Else
         Prefix = Join(pArray, "")

    MsgBox Prefix

            GoTo Suffix

        End If

    Next

    Suffix:
    For sCount = 1 To Len(Entry1)

        currentCharacter = Right(Entry1, sCount)
        currentCharacter2 = Right(Entry2, sCount)

        If currentCharacter = currentCharacter2 Then

         sArray(sCount) = currentCharacter

            NextRow2 = Sheet7.Cells(Rows.Count, "G").End(xlUp).Row + 1
           Sheet7.Cells(NextRow2, "G") = currentCharacter
          Suffix = currentCharacter
         Else


    MsgBox Suffix

            Exit Sub

        End If

    Next





End Sub
© www.soinside.com 2019 - 2024. All rights reserved.