簡體   English   中英

Excel VBA MACBOOK - 分隔行值到堆疊的 2 列

[英]Excel VBA MACBOOK - Delimited Row Values to stacked 2-Column

我一直在尋找這個問題的答案,並發現多個解決方案不適用於我的 Excel for Mac 版本 (v16.33 2020)


1.使用不兼容的Power Query

2.我跟着這個鏈接在這里: LINK它使用Scripting.Dictionary
但是在使用它時,我不斷收到錯誤消息:

"Runtime Error '429'
Active X can't create object

3. 我從http://www.sysmod.com/Dictionary.zip下載了更新的Dictionary.clsKeyValuePair.cls

4.更新代碼后:
Set dAttributes = New Dictionary
Set dValues = New Dictionary
我收到一個錯誤,因為 k 為空: For Each k In dic


問題:我有一個 2 列的分隔值列表,我必須將它們放入 excel 上的堆疊列中。 要保留在左列中的標識符。 這樣做的原因是我們正在使用的程序需要項目 ID 標題,以及每個相關產品 URL 的一行。

例如:
Column A | Column B
Item 1 | a.jpg, b.jpg, c.jpg
Item 2 | a.jpg, b.jpg, c.jpg

需要是:
Column A | Column B
Item 1 | a.jpg
Item 1 | b.jpg
Item 2 | a.jpg
Item 2 | b.jpg

項目和圖像的值都不同。 有數百行和值,因此復制粘貼手動轉置不是一個可行的選擇。

目前我的代碼在這里:我被卡住了。 請評論解決此問題的步驟。 我已經嘗試了建議的鏈接,但沒有任何效果。

Sub ttt()
 Dim dic As Object:
 Set dAttributes = New Dictionary
    Set dValues = New Dictionary
    Dim x&, cl As Range, rng As Range, k, s
    Set rng = Range([C1], Cells(Rows.Count, "C").End(xlUp))
    x = 1 'used as a key for dictionary and as row number for output
    For Each cl In rng
        For Each s In Split(cl.Value2, ",")
            dic.Add x, Cells(cl.Row, "A").Value2 & "|" & _
                        Cells(cl.Row, "B").Value2 & "|" & LTrim(s)
            x = x + 1
    Next s, cl
    For Each k In dic
        Range(Cells(k, "A"), Cells(k, "C")).Value2 = Split(dic(k), "|")
    Next k
End Sub

您不需要為此使用字典 - 從 ColB 拆分值並循環遍歷數組:對於每個元素,將 ColA 中的值和元素值寫出到新行。

Dim rw As Range
Dim ws As Worksheet, arr, e, c As Range
Set ws = ActiveSheet
Set c = ws.Range("H1") '<< start of output

'loop over input rows
For Each rw In ws.Range("A1").CurrentRegion.Rows
    arr = Split(rw.Cells(2).Value, ",")
    For Each e In arr
        c.Resize(1, 2).Value = Array(rw.Cells(1).Value, Trim(e))
        Set c = c.Offset(1, 0) 'next output row
    Next e
Next rw

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM