我们有两张工作簿:Sheet1和Sheet2。 在Sheet1中,只有一列包含近100万个单元格(产品名称)的数据。 Sheet2具有现有数据(也是产品名称),其中第一行是为字母列标题保留的; A-Z和NUM(27门)。 我们所追求的是一个宏,它将对Sheet1 a-z0-9中的数据进行排序,然后将每个字母的数据块从Sheet1分发(移动)到Sheet2中每个指定列的数据的底部。 我们实际上已经在许多论坛中搜索了类似的解决方案,我们可以采用和适应,但我们基本上没有发现任何问题。任何人都可以帮助我们吗?提前谢谢。
答案 0 :(得分:0)
这是一些有玩法的代码。 只需将其放入空白工作簿中即可:
它应该给你一个合作的想法。
您可以轻松记录正在进行的排序,以获取该代码。
Sub createRandomStrings()
Dim curRow, curStr, curLtr, i
Application.ScreenUpdating = False
For curRow = 1 To 50000
curStr = ""
For i = 0 To 10
curChar = Int((Asc("Z") - Asc("A") + 1) * Rnd + Asc("A"))
curStr = curStr + Chr(curChar)
Next i
Cells(curRow, 1) = curStr
Next curRow
Application.ScreenUpdating = True
End Sub
Function findFirstItemStartingWith(startLetter) As Integer
Dim curRow, curStr ', startLetter ** EDIT ** this var commented-out
For curRow = 1 To 50000
curStr = Cells(curRow, 1)
If Mid(curStr, 1, 1) = startLetter Then
findFirstItemStartingWith = curRow
Exit Function
End If
Next curRow
findFirstItemStartingWith = -1
End Function
Sub tmp()
aStart = findFirstItemStartingWith("A")
bStart = findFirstItemStartingWith("B")
If (aStart <> -1) And (bStart <> -1) Then
MsgBox ("A found from Row: " + Str(aStart) + " to " + Str(bStart - 1))
End If
End Sub