我有一個小問題,無法解決。
有一長串數字。我需要弄清楚哪個是使用的,哪個是免費的。

像圖片一樣列出,我需要它來確定使用了女巫號碼。這些數字放在另外 12 張紙上,所以我必須全部搜索。
我需要這個來生成下一個免費工具編號,不同的工具有不同的起始編號。
此致。
希望有人可以幫助
Rcount = 0
Row = 2
Set ran = Sheets("Alle").Range("A2:A1600")
For Each cell In ran
FindString = Sheets("All").Cells(Row, 1).Value
'MsgBox ("Test: " & FindString)
If Trim(FindString) <> "" Then
For Each sh In ActiveWorkbook.Worksheets
With sh.Range("A:A")
Set Rng = .Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
MsgBox ("Row: " & Row)
Exit Sub
End If
End With
Next
End If
Row = Row 1
Next cell
已經嘗試過這段代碼,但只能得到第一行。所以我想有什么問題。
uj5u.com熱心網友回復:
歡迎來到 SO。
當您說使用的數字時,我理解您的意思是相鄰列是 X (或其他FindString)的那些數字
您可以創建一個包含所有行號的陣列,其中 0 表示FindString該行中沒有或行號(如果有)。
舉個例子,我有 4 個作業表:

如果 B 列中有 X,我的代碼只回傳每個作業表中的行號:
Sub test()
Dim DataRows As Variant
Dim i As Long
Dim rngSource As Range
Dim FindString As String
Dim wk As Worksheet
For Each wk In Sheets(Array("Sheet1", "Sheet3", "Sheet4")) 'array of 12 sheets
'maybe you need to change parameters in each sheet. You can do it with Select Case
' I'm using the same parameters for all worksheets
FindString = """X""" 'so it saves the quotes too
Set rngSource = wk.Range("B1:B25")
DataRows = Evaluate("ROW(" & rngSource.Address(, , , True) & ")*(--(" & rngSource.Address(, , , True) & "=" & FindString & "))")
For i = LBound(DataRows) To UBound(DataRows) Step 1
If DataRows(i, 1) > 0 Then Debug.Print wk.Name, DataRows(i, 1), wk.Range("A" & DataRows(i, 1)).Value 'show only row numbers of used numbers and used numbers
Next i
Erase DataRows
Next wk
End Sub
輸出:

你只需要調整一些部分來得到你想要的。
這里棘手的部分是這行代碼:
DataRows = Evaluate("ROW(" & rngSource.Address(, , , True) & ")*(--(" & rngSource.Address(, , , True) & "=" & FindString & "))")
Evaluate 將評估一個函式,就像您在 Excel 中鍵入它一樣,所以在第一個回圈中它將是這樣的:
ROW(B1:B25)*(--(B1:25="X"))
這是一個回傳數字陣列的棘手函式。(B1:25="X")如果單元格是否等于 X,它只是一個 1 和 0 的陣列。然后將該陣列乘以行號。如果單元格不是 X,則rownumber*0=0表示它是空的。在其他情況下rownumber*1=rownumber,您只得到零和使用數字的行號:)
然后將其保存到一個陣列中(陣列作業得更快),如果陣列中的值不為零,則只獲取輸出。
DataRows順便說一句,它是一個二維陣列,您需要i代碼中的索引行和列索引(代碼中始終為 1)。
其余代碼很容易理解。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528696.html
標籤:擅长vba序列
