Vba Excel条形码扫描仪列数据到行
我正在使用条形码扫描器对大量货物进行清点,我想将数据输入excel。我可以在每次扫描后更改扫描仪的行为方式,以进行制表、退货等操作。但我的大问题是,为了有效地提供数量,我必须扫描项目代码7位,然后依次扫描从0到9的数量。这样548实际上是5,4,8,当使用excel时,它会将每个数字放入一个新的单元格中。我想做的是让excel检查长度是7位还是1位,但我没有VBA印章。对于每个一位数字,它应将数字移动到与前一个7位数字相同的行中的下一个单元格,这样,每个连续的一位数字都会合并,就像excel将单元格连接在一起一样。然后,它应该删除原始列中的单个数字,并让下一行以7位条形码编号开始 我希望这是有道理的 例如:Vba Excel条形码扫描仪列数据到行,vba,excel,Vba,Excel,我正在使用条形码扫描器对大量货物进行清点,我想将数据输入excel。我可以在每次扫描后更改扫描仪的行为方式,以进行制表、退货等操作。但我的大问题是,为了有效地提供数量,我必须扫描项目代码7位,然后依次扫描从0到9的数量。这样548实际上是5,4,8,当使用excel时,它会将每个数字放入一个新的单元格中。我想做的是让excel检查长度是7位还是1位,但我没有VBA印章。对于每个一位数字,它应将数字移动到与前一个7位数字相同的行中的下一个单元格,这样,每个连续的一位数字都会合并,就像excel将单
7777777
3
4
5
7777778
4
5
6
7777779
7
8
9
应成为:
| 7777777 | 345 |
| 7777778 | 456 |
| 7777779 | 789 |
谢谢 我的工作表设置如下: 然后运行下面的代码
Sub Digits()
Application.ScreenUpdating = False
Dim i&, r As Range, j&
With Columns("B:B")
.ClearContents
.NumberFormat = "@"
End With
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Set r = Cells(i, 1)
If Len(r) = 7 Then
j = 1
Do Until ((Len(r.Offset(j, 0).Text) = 7) Or (IsEmpty(r.Offset(j, 0))))
Cells(i, 2) = CStr(Cells(i, 2).Value) & CStr(r.Offset(j, 0))
j = j + 1
Loop
End If
Set r = Nothing
Next
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Len(Cells(i, 1)) < 7 Then Rows(i & ":" & i).Delete
Next i
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
我得到的结果是:
这是我对您开始的解决方案所做的,但我认为您的新解决方案会更好地工作。非常感谢你,mehow
Sub Digits()
Application.ScreenUpdating = False
Dim i, arr, r As Range
Dim a, b, c, d, e
Dim y
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Set r = Cells(i, 1)
Set a = Cells(i + 1, 1)
Set b = Cells(i + 2, 1)
Set c = Cells(i + 3, 1)
Set d = Cells(i + 4, 1)
Set e = Cells(i + 5, 1)
If Len(a) = 7 Then
y = 0
ElseIf Len(b) = 7 Then
y = 1
ElseIf Len(c) = 7 Then
y = 2
ElseIf Len(d) = 7 Then
y = 3
ElseIf Len(e) = 7 Then
y = 4
Else:
y = 0
End If
If Len(r) = 7 Then
arr = Range("A" & i & ":A" & i + y).Value
Range("B" & i & ":F" & i) = WorksheetFunction.Transpose(arr)
End If
Next
Cells.Replace "#N/A", "", xlWhole
Application.ScreenUpdating = True
End Sub
你自己有没有试过做这件事?当然有。我无法让excel区分这两个长度,然后合并单个数字。我尝试过很多策略,但对如何用这种方式操纵excel知之甚少。当然,我的示例中的格式不起作用。您是否希望将格式设置为:| | | |…共享您的研究成果可以帮助所有人。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见查看工作表事件-工作表更改是您想要的。它有一个参数目标,表示刚刚更改的单元格。这很接近。我想我可以从这个有用的策略中工作。唯一的问题是数量值可以是从1到999的一个数字,这意味着它不是条形码后面的标准数字。@user2744867这不是代码的问题。这段代码是为处理问题的原始复杂性而设计的,它确实做到了。现在,您已经提供了更多详细信息,我更新了我的答案,并为您提供了一个新代码,涵盖了您在上述评论中描述的案例:在这里,关于stackoverflow,我们接受对我们有帮助的答案: