返回列表 上一主題 發帖

[發問] (字典物件)查詢並對齊資料列問題

[發問] (字典物件)查詢並對齊資料列問題

各位前輩好,
小弟目前練習字典物件時遇到一個問題,
附上檔案以供前輩參考:
20161111-查詢並對齊橫列問題.zip (7.94 KB)

問題以文字簡單說明如下:

A欄與B欄為資料總表,依序排列,
A欄儲存格資料與B欄儲存格資料具有相對關係.


C欄與D欄的資料是取自A欄B欄,但是順序經過打亂.
E欄與F欄亦同.

現在是希望可以將資料排序後,將資料的橫列位置對齊A欄與B欄的位置.

用文字說明可能不易理解,
還請前輩參考附檔的"期望結果示意"頁籤.


這個練習問題是改編自以下網址的實例7:
http://club.excelhome.net/thread-868892-1-1.htmlz

該論壇有板友附上參考解答如下,
我用電腦版看不到網站的圖片,
推測可能是從第三橫列開始,與小弟此篇的附檔有些差異,僅供參考:
  1. Private Sub CommandButton1_Click()  ‘by:oobird
  2. Dim d As Object, rng, i%, j%, arr
  3. Set d = CreateObject("Scripting.Dictionary")
  4. rng = Range("a3:f" & [a65536].End(xlUp).Row)
  5. ReDim arr(1 To UBound(rng), 1 To 4)
  6. For i = 1 To UBound(rng)   
  7. d(CStr(rng(i, 1))) = i
  8. Next i
  9. For j = 3 To 5 Step 2
  10. For i = 1 To Cells(65536, j).End(xlUp).Row - 2
  11. If d(CStr(rng(i, j))) <> "" Then
  12. arr(d(CStr(rng(i, j))), j - 2) = rng(i, j)     
  13. arr(d(CStr(rng(i, j))), j - 1) = rng(i, j + 1)
  14. End If
  15. Next i
  16. Next j
  17. [c3].Resize(UBound(rng), 4) = arr
  18. End Sub   
複製代碼
因為知道論壇上的前輩應該有其他方式的解法,
所以小弟斗膽上來發問,可以的話還望前輩不吝解答,感謝.

真的很抱歉,
"原始資料"分頁跟
"期望結果示意"分頁的A欄跟B欄應該是完全一樣的,
"期望結果示意"分頁的第19橫列是多打的,而第一空白橫列應予刪除而未刪除,
造成困擾不好意思.

TOP

回復 3# c_c_lai


    十分感謝c_c_lai前輩提供解答,小弟再研究一下

TOP

回復 5# 准提部林

非常感謝淮提部林前輩願意費心指點,一直以來承蒙前輩無私指導,真的非常感激.
再次感謝.

TOP

回復 5# 准提部林

淮提部林前輩您好,不好意思冒昧問一下,

前輩所提供程式碼的其他部份小弟勉強能領會一二,

只是關於第三行:
Arr = Range("A2:F" & [A65536].End(3).Row)

其中數字3這個部份,小弟不明其意,
雖然知道可取代xlUP,但是用1,2,4去修改程式碼進行試驗,卻無法達到取代xlToRight等其他方向的效果,
而是變成選取整欄或是整列,
小弟斗膽,懇請前輩不吝指點,感謝.

TOP

回復 8# 准提部林


  了解,十分感謝前輩指點,小弟會再努力練習.

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題