[英]build excel array from data items and a multiplier
這個網站上的第一個問題。
多年來來到這里沐浴着所提供知識的熱情! 請對我好一點。 ;)
我不是程序員,但是可以繞過excel,但是我在excel中有一個問題,我一直在努力尋找解決方案。
我需要獲取一組數據並將其轉換為該數據所有出現的數組(或列表)。 例如,一組數據(A,B,C)和每個項目的實例值(2,1,3)。
我需要做的是將這兩項合並為所有出現的數組。
像這樣:-
Data,Instances
A,2
B,1
C,3
Total 6
Result
1,A
2,B
3,C
4,A
5,C
6,C
(我希望這很清楚-我的評分還不夠高,無法發布屏幕截圖)
因此,在此示例中,我有2個As,1個B和3個C,總共提供6個項目。 為了創建結果,我遍歷了列表6次,列出了每個數據項(如果仍然存在)(但是AABCCC的數組/列表同樣有效)。 對於完整的數據集,可以有多達12個不同的數據項,且出現次數從1到12。
我以某種方式認為我使一個簡單的過程變得過於復雜,但是對於我自己的一生,我無法全力以赴地實現所需的結果。
假設我們將您的數據放在A列中:
並運行以下簡短宏:
Sub croupier()
Dim N As Long, K As Long, i As Long, ary(), bry()
Dim v As String
N = Cells(Rows.Count, "A").End(xlUp).Row
ReDim ary(1 To N)
ReDim bry(1 To N)
For i = 1 To N
v = Cells(i, "A").Value
cry = Split(v, ",")
ary(i) = cry(0)
bry(i) = CLng(cry(1))
Next i
K = 1
While Application.WorksheetFunction.Sum(bry) > 0
For i = 1 To N
If bry(i) <> 0 Then
Cells(K, "B").Value = ary(i)
bry(i) = bry(i) - 1
K = K + 1
End If
Next i
Wend
End Sub
我們的結果是這樣的:
我們反復運行A列,將值放在B列中,直到某項的計數達到零為止。
當項目總數為零時,我們停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.