說實話,我不完全確定如何描述它是我正在嘗試完成的?但是,無論如何,這是無論如何。我有一個Excel工作表,其中包含一列ID和第二列值需要關聯到第一列。問題是A列中的ID包含重複項,這是可以的,因爲一個ID可以符合多個值。我需要的是有一個第三列撤回唯一的ID,第四列拉回所有值的分號分隔列表的id符合資格。希望附加的圖像有意義嗎?爲了什麼值得我嘗試每個我能想到的公式,而且我對宏的認識一無所知,這正是我所想要實現的。 試圖找到唯一的ID以及其在excel中符合的所有值
回答
試試下面的代碼:
Sub sample()
Dim lastRowA As Long, lastRowC As Long
lastRowA = Range("A" & Rows.Count).End(xlUp).Row
lastRowC = Range("C" & Rows.Count).End(xlUp).Row
Dim rng As Range, cell As Range
Set rng = Range("C2:C" & lastRowC)
Dim rngSearch As Range
Set rngSearch = Range("A1:A" & lastRowA)
Dim rngFind As Range
Dim firstCell As String
For Each cell In rng
Set rngFind = rngSearch.Find(What:=cell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not rngFind Is Nothing Then
temp = rngFind.Offset(0, 1)
firstCell = rngFind.Address
Do While Not rngFind Is Nothing
Set rngFind = rngSearch.FindNext(After:=rngFind)
If rngFind.Address <> firstCell Then
temp = temp & ";" & rngFind.Offset(0, 1)
Else
Set rngFind = Nothing
End If
Loop
End If
cell.Offset(0, 1) = temp
Next
End Sub
這裏的另一種方法,有幾個優點
- 它builkds的唯一的SKU
- 明確舊數據從列列表
C:D
- 它的運行速度比循環範圍要快得多
Sub Demo()
Dim rngA As Range, rng as Range
Dim datA As Variant
Dim i As Long
Dim sh As Worksheet
Dim dic As Object
Set sh = ActiveSheet ' can change this to your worksheet of choice
Set dic = CreateObject("Scripting.Dictionary")
With sh
' Get data from columns A:B into a variant array
Set rngA = .Range(.Cells(2, 2), .Cells(.Rows.Count, 1).End(xlUp))
datA = rngA
' Create list of unique sku's and built value strings
For i = 1 To UBound(datA)
If dic.Exists(datA(i, 1)) Then
dic(datA(i, 1)) = dic(datA(i, 1)) & ";" & datA(i, 2)
Else
dic.Add datA(i, 1), datA(i, 2)
End If
Next
' Clear exisating data from columns C:D
Set rng = .Range(.Cells(2, 4), .Cells(.Rows.Count, 3).End(xlUp))
If rng.Row > 1 Then
rng.Clear
End If
' Put results into columns C:D
.Range(.Cells(2, 3), .Cells(dic.Count + 1, 3)) = Application.Transpose(dic.Keys)
.Range(.Cells(2, 4), .Cells(dic.Count + 1, 4)) = Application.Transpose(dic.Items)
End With
End Sub
如何補充一點:
- 啓動VBS編輯器(Alt鍵 + F11從Excel)
- 表演項目資源管理器,如果其不可見(Ctrl + R)
- 添加
Module
(右鍵單擊工作簿,插入模塊) - 打開模塊(DBL點擊)
- 添加
Option Explicit
作爲第一行,如果不是已經有 - 複製此代碼粘貼到模塊
如何運行它,從Excel
- 激活表與您的數據
- 開放宏觀d ialog(Alt鍵 + F8)
- 從列表中選擇
Demo
和運行
嗨克里斯,當我按照上面的步驟我得到運行時間錯誤429:ActiveX組件不能創建對象。如果我調試它的話:Set dic = CreateObject(「Scripting.Dictionary」)突出顯示 – Eric 2013-04-28 15:51:52
我不確定如何感謝你們兩位的幫助,但是如果有什麼我需要幫助你的評級或某事請告訴我。如果任何人在這種情況下,這是爲我工作: – Eric 2013-04-29 17:36:21
子MG29Apr31 昏暗的RNG作爲範圍 昏暗的DN作爲範圍 昏暗TXT作爲字符串 昏暗unQ 設置RNG =(範圍(「A1」),範圍( 「A」 &Rows.count).END(xlUp)) 對於每個DN在RNG 如果InStr函數(TXT,DN)= 0然後 TXT = TXT& 「」 &DN 結束如果 接着DN unQ = Application.Transpose(Split(Mid(Txt,2),「,」)) ReDim保留unQ(1到UBound(unQ,1),1到2) Dim n As Long For Each Dn In Rng For n = 1到UBound(unQ) 如果Dn = Val( unQ(n,2)= 2f(unQ(n,2)=「」,Dn.Offset(,1),unQ(n,2)& ";「&Dn.Offset(,1 )) Next n Next Dn Range(「C1」)。Resize(UBound(unQ),2)= unQ End Sub – Eric 2013-04-29 17:37:24
- 1. 查找的ID,其中的值是唯一的在陣列
- 2. 在所有列中查找唯一值
- 3. 找到所有的ID,其中日期值爲null
- 4. 在sequalizer中查找所有唯一ID的所有最新數據?
- 5. 複合ID及其在JPA
- 6. 在無向圖中找到所有唯一路徑
- 7. 查找值的所有ID
- 8. mongo查詢選擇集合中所有唯一ID的計數
- 9. 在Tensorflow中找到唯一的值對
- 10. 查找Excel列中的所有唯一名稱
- 11. 試圖找到一個合適的起點以及製作應用的方向
- 12. 查找所有R唯一字符串
- 13. Excel中的唯一值
- 14. Excel中的唯一值
- 15. html中唯一的id值
- 16. 的jQuery找到唯一的ID
- 17. 做複合鍵中的所有屬性具有唯一值
- 18. 唯一值在Excel
- 19. 哪裏可以找到CDH及其所有軟件版本?
- 20. 找到域中的所有網頁及其子域
- 21. Excel宏到Word郵件合併正試圖合併列中的所有行
- 22. 在.net中調試時,是否可以找到對象的唯一標識符?
- 23. 找到一個特定的字符串的所有id
- 24. MySQL聯合所有ExtJS網格 - 需要唯一的ID列
- 25. 在MS-Excel中生成唯一ID
- 26. Excel - 計算符合多個條件的唯一值
- 27. MySQL的唯一的ID或聯合ID
- 28. 查找符合標準的唯一列
- 29. 我在哪裏可以找到SQL Server中的所有DISABLED唯一鍵?
- 30. 跨越我試圖找到具有橫跨兩列值的唯一對行列
請 '關閉' 通過標記正確答案的問題。這是人們在幫助別人時喜歡的東西。這將有助於脂肪酶與同樣的問題,以確定正確的解決方案:) – Santosh 2013-05-28 01:17:30