- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
回復 2# Hsieh
謝謝論壇,謝謝前輩
後學藉此帖學習到JOIN() 儲存格值需要經過兩次轉置,讓變成一維陣列,才能連接成新字串
學習心得如下,請前輩再指教
Option Explicit
Sub Ex()
Dim A As Range, d, d1, mystr$
'↑宣告變數:A是 儲存格變數,(d,d1)是通用型變數,mystr是字串變數
Set d = CreateObject("Scripting.Dictionary")
'↑令d這通用變數是 字典
Set d1 = CreateObject("Scripting.Dictionary")
'↑令d1這通用變數是 字典
For Each A In Range([A1], [A1].End(xlDown))
'↑設逐項迴圈!令A這儲存格變數是 範圍儲存格裡的一格,
'範圍儲存格:本表[A1]到 [A]往下找最後一個有內容儲存格,這範圍儲存格
mystr = Join(Application.Transpose(Application.Transpose(A.Resize(, 4))), ",")
'↑令mystr這字串變數是 A變數(儲存格)向右擴展4欄儲存格經2次轉置後,
'以 ","連接成的新字串
d(mystr) = d(mystr) + A.Offset(, 4).Value
'↑令以mystr變數為key,item是 item自身 + A變數向右偏移4格儲存格(E欄)值,
'納入d字典
d1(mystr) = Array(A.Value, A.Offset(, 1).Value, A.Offset(, 2).Value, _
A.Offset(, 3).Value, d(mystr))
'↑令以mystr變數為key,item是 陣列(A變數(含)右側4個儲存格值,
'以mystr變數查d字典的item值)
Next
[H:L] = ""
'↑令[H:L]儲存格值是 空字元
[H1].Resize(d1.Count, 5) = Application.Transpose(Application.Transpose(d1.items))
'↑令[H1]擴展向下d1字典key數列,擴展向右5欄,這範圍儲存格值以d1字典items轉置兩次帶入
End Sub |
|