在我的工作中,我经常创建前缀。从上周开始,我认为我可以用excel中的宏来加快我的工作,但我以前从未在 VBA 中开发并需要你的帮助。
我们从任何供应商处获得包含商品编号的列表,然后我必须为我们的系统创建前缀。我们的系统正在寻找前缀,然后它知道供应商。如果前6个字符与另一个供应商完全相同,那么来自两个供应商的前缀将变得更长到7个字符。如果它再次相同,则前缀为8个字符,依此类推
例如:
article numbers from supplier_1:
04012384724993
04012384473373
04012384111453
...
article numbers from supplier_2:
12345671846219
12345629946120
12345629815294
...
article numbers from supplier_3:
12345694724109
12345694715268
12345694724773
...
现在您看到每个供应商的第一个字符是相同的。
对于Supplier_1,所有数字都以“040123”开头,因此这是第一个前缀。
Supplier_2 ans 3具有相同的前6个字符,所以在这里我们再使用一个来识别他。
Supp_2 -> "1234567" and "1234562"
Supp_3 -> "1234569"
Supplier_2现在有2个前缀,因为第7个位置在某些商品编号上有所不同,但不像supplier_3在此位置使用的那样。
现在我有一张带有A列和B列的Excel表格。 在A栏中,我粘贴了supplier_1和B列中的所有商品编号,我从supplier_2粘贴了这些商品编号。 现在我想运行一个宏,用Cell A1中的前6个字符创建一个变量“search”,并根据B列进行检查。如果B列中的一个数字相同,那么变量“search”将获得额外的来自Cell A1的char并再次检查。如果现在在B列中找不到前7个字符,则它是supplier_1的第一个前缀。我想将其粘贴到D列中。 现在,变量“搜索”从A列中的下一个单元格获得前6个字符,(A2),后面的A3,...并且对照B列进行检查。
我不知道,如何将前6个字符放入变量“search”中。 有人可以帮帮我吗?
非常感谢。
答案 0 :(得分:1)
以尽可能小的方式处理大问题总是一个好主意。实际上,将字符串的前几个字符分配给变量可能是一个好的开始。快速Google搜索很可能会指向Left
功能。以下是MSDN page的链接,以获取有关其工作原理和使用方法的更多信息。
我还建议您启用立即窗口,默认情况下可以使用 Ctrl + G 完成。在编写新代码时,使用Debug.Print
将是您最强大的工具之一。
Sub Example1()
Dim searchRange As Range
Dim search As String
Set searchRange = ThisWorkbook.Worksheets("Sheet1").Range("A1")
search = Left(searchRange.Value, 6)
Debug.Print search
End Sub
这是一个片段,让您了解如何解决问题的下一步。
Sub Example2()
Dim compareRange As Range
Dim cell As Range
' SpecialCells is one of many ways to find all populated cells
Set compareRange = ThisWorkbook.Worksheets("Sheet1").Columns(2) _
.SpecialCells(xlCellTypeConstants)
For Each cell In compareRange
Debug.Print cell.Value
Next
End Sub
请记住,StackOverflow可以帮助您解决特定的编码问题,而这些问题是您无法通过在线查找的资源来解决的。
答案 1 :(得分:0)
我很难解读你所需要的东西,但这就是我想出的。
我将假设您知道如何将模块插入Excel工作表,复制代码和运行宏。如果您不知道如何请告诉我,我会尽力协助您。
如果这不是您所需要的,请向我提供一个示例数据集以及您希望从宏中获得的答案,以便我可以在开发时进行比较。祝你的项目好运!
VBA模块代码
'This subroutine will take the contents of column A cells and search column B for matching digits
' if they are not found it will copy the current search term into column D
Option Explicit
Sub searchPrefix()
Dim cellContents As String
Dim tempSearchVariable As String
Dim isFound As Boolean
Dim quantitySearchCharacters As Integer
Dim entryCounter As Integer
Dim i As Integer
isFound = False
quantitySearchCharacters = 6
entryCounter = 0
'counts number of entries in column A
Cells.Range("A1").Select
Do Until IsEmpty(ActiveCell)
entryCounter = entryCounter + 1
ActiveCell.Offset(1, 0).Select
Loop
' gets value of comparison cell in column A
For i = 0 To entryCounter - 1
cellContents = Cells(1 + i, 1).Value
tempSearchVariable = Left(cellContents, quantitySearchCharacters)
Cells.Range("B1").Select
Do Until IsEmpty(ActiveCell)
' detects if B1 column cell content matches the current search terms and then adds more characters if required
If Left(ActiveCell.Value, quantitySearchCharacters) = tempSearchVariable Then
quantitySearchCharacters = quantitySearchCharacters + 1
tempSearchVariable = Left(cellContents, quantitySearchCharacters)
isFound = True
End If
If isFound Then
isFound = False 'reset flag
Cells.Range("B1").Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Cells(1 + i, 4).Value = tempSearchVariable ' prints the discovered unique prefix to column D
Next i
End Sub