需要一些有關 Excel 宏的幫助——我目前正在努力撰寫一個結合所有三個行程的宏。我有兩張表:表 1 在每個單元格中包含一個由逗號分隔的具有多個 ID 的列(一個單元格中最多可以包含 30 個 ID),表 2 包含每個 ID 的資料。
這是我要達到的順序:
- 將作業表 1 中的 ID 拆分為單獨的單元格
- 將每個分離的 ID 與其在作業表 2 中的行匹配,復制第 6 列和第 7 列中的值并將其添加到作業表 1 的相應單元格。
- 將超鏈接應用到最后一個單元格。
例如,下面是作業表 1 和 2 中的一行當前的樣子:
表 1
| ID |
|---|
| 123456, 789123 |
表 2
| ID | 地位 | 班級 |
|---|---|---|
| 123456 | 進行中 | 一種 |
| 789123 | 完畢 | 乙 |
這就是我希望在宏運行時輸出查找表 1 的內容:
| ID | ||
|---|---|---|
| 123456, 789123 | 123456,進行中,A | 789123,完成,B |
我的代碼超級關閉,但這是我所擁有的:
Set wb = ThisWorkbook
Dim sel As Range
Set sel = Selection
Dim arr() As String
Dim cell As Range
Dim i As Long
Set wsCheck = wb.Sheets("2")
'Column N (IDs)
wb.Sheets("1").Columns("N:N").Select
For Each cell In sel
arr = Split(cell, ",")
For i = 0 To UBound(arr)
m = Application.Match("*" & arr(i) & "*", wsCheck.Columns(1), 0)
If Not IsError(m) Then
cell.Offset(0, i 1).Value = wsCheck.Cells(m, 6).Value & wsCheck.Cells(m, 7).Value
cell.Parent.Hyperlinks.Add Anchor:=cell.Offset(0, i 1), Address:="URL" & arr(i), TextToDisplay:=arr(i)
End If
Next i
Next cell
uj5u.com熱心網友回復:
試試這個:
Sub test()
Dim wb As Workbook, arr, ws As Worksheet, wsCheck As Worksheet
Dim cell As Range
Dim i As Long, v, m
Set wb = ThisWorkbook
Set ws = wb.Sheets("1")
Set wsCheck = wb.Sheets("2")
If Not TypeOf Selection Is Range Then Exit Sub 'make sure a range is selected
If Selection.Worksheet.Name <> ws.Name Then Exit Sub '...on the correct sheet
For Each cell In Selection.EntireRow.Columns("N").Cells
arr = Split(cell.Value, ",")
For i = 0 To UBound(arr)
v = CLng(Trim(arr(i))) 'remove spaces and convert to number
m = Application.Match(v, wsCheck.Columns(1), 0)
If Not IsError(m) Then
With cell.Offset(0, i 1)
.Value = Join(Array(v, wsCheck.Cells(m, 6).Value, _
wsCheck.Cells(m, 7).Value), ",")
.Parent.Hyperlinks.Add Anchor:=.Cells(1), _
Address:="", _
SubAddress:=wsCheck.Cells(m, 1).Address(0, 0, xlA1, True), _
TextToDisplay:=.Value
End With
End If
Next i
Next cell
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/458957.html
