Board logo

標題: [發問] 簡單組合問題。 [打印本頁]

作者: stephenlee    時間: 2021-6-2 11:42     標題: 簡單組合問題。

本帖最後由 stephenlee 於 2021-6-2 11:44 編輯

附件表,如何用 F欄"Line"及Q欄"CTN" 來自動分類出是由那個Line 組合成, X欄 "line group" 是得出X欄的結果,
如何做像X欄那樣的結果, X 欄是我要求得出的結果,F欄 Line 資料有多有少, 要根據Q欄來分Line 是由多少組成。
謝謝

[attach]33364[/attach]
作者: samwang    時間: 2021-6-2 14:28

回復 1# stephenlee


不好意思,不太能理解X欄的結果如何產出,可否請你再詳細說明規則,感謝。
作者: stephenlee    時間: 2021-6-2 14:41

回復  stephenlee


不好意思,不太能理解X欄的結果如何產出,可否請你再詳細說明規則,感謝。
samwang 發表於 2021-6-2 14:28



   麻煩你, 其實CTN 是箱 編號  1/8 代表第一箱,而X欄  1/8 代表 有1-12 Line 存在, 所以在第一行打上 1-12,
其他的也是這樣。,我想將資料貼上後,自動會得出X 欄的結果。謝謝
作者: hcm19522    時間: 2021-6-2 14:46

https://blog.xuite.net/hcm19522/twblog/589806162
作者: samwang    時間: 2021-6-2 16:08

回復 3# stephenlee

請測試看看,謝謝。

Sub test()
Dim Arr, xD, i%, i2&, N%
Arr = Range([F1], [Q65536].End(3))
Set xD = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Arr)
    If Not xD.Exists(Arr(i, 12) & "") Then
        xD(Arr(i, 12) & "") = ""
        For i2 = i To UBound(Arr)
            If xD.Exists(Arr(i2, 12) & "") Then N = N + 1
        Next
        Cells(i, 24) = Arr(i, 1) & "~" & N: N = 0
    End If
Next
End Sub
作者: stephenlee    時間: 2021-6-3 14:37

回復  stephenlee

請測試看看,謝謝。

Sub test()
Dim Arr, xD, i%, i2&, N%
Arr = Range([F1], [ ...
samwang 發表於 2021-6-2 16:08



非常感謝大大,又是閣下再次幫忙。
不過有一個部份還差一點,望閣下看是否能幫忙解決。
感謝你花了太多時間幫我研究這個。

使用了VBA 指示後,例如 CTN  5/8  正確的組合應該是 5-15, 但顯示了 5-11 。第 8/8 也是 正確應該是5-15 。 但也顯示 5-11

能不能做到根據F欄和Q欄 的資料多少來做出組合排列, 就是F欄和Q欄都是有機會多和少,要根據情況排列,做法是一樣的,謝謝了。
作者: samwang    時間: 2021-6-3 15:56

回復 6# stephenlee

不好意思沒注意到,請再測試看看,謝謝。

Sub test2()
Dim Arr, xD, i%, i2&, N%
Arr = Range([F1], [Q65536].End(3))
Set xD = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Arr)
    If Not xD.Exists(Arr(i, 12) & "") Then
        xD(Arr(i, 12) & "") = i
        For i2 = i To UBound(Arr)
            N = xD(Arr(i2, 12) & ""): If N = 0 Then Exit For
        Next
        Cells(i, 24) = Arr(i, 1) & "~" & Arr(i2 - 1, 1)
    End If
Next
End Sub
作者: stephenlee    時間: 2021-6-4 13:54

回復  stephenlee

不好意思沒注意到,請再測試看看,謝謝。

Sub test2()
Dim Arr, xD, i%, i2&, N% ...
samwang 發表於 2021-6-3 15:56



    麻煩你才對,用最新指示,發覺 1/8 會出現結果,但 2/8 就沒有任何資料,  會隔一個才出現結果,要再麻煩你看看。謝謝
作者: samwang    時間: 2021-6-4 18:04

回復 8# stephenlee

請再測試看看,謝謝。

Sub test3()
Dim Arr, xD, i%, i2&, N%
Arr = Range([F1], [Q65536].End(3))
Set xD = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Arr)
    If Not xD.Exists(Arr(i, 12) & "") Then
        xD(Arr(i, 12) & "") = i
        For i2 = i To UBound(Arr)
           If Not xD.Exists(Arr(i2, 12) & "") Then Exit For
        Next
        Cells(i, 24) = Arr(i, 1) & "~" & Arr(i2 - 1, 1)
    End If
Next
End Sub
作者: stephenlee    時間: 2021-6-5 11:49

回復  stephenlee

請再測試看看,謝謝。

Sub test3()
Dim Arr, xD, i%, i2&, N%
Arr = Range([F1] ...
samwang 發表於 2021-6-4 18:04



    以上指令完全符合要求,太感謝大大幫了我這麼多忙,不好意思要你花時間幫我研究。非常感謝。  在此謝謝了。

不知道能不能幫我最後一個問題,這個簡單一點。

檔案內 A 欄是資料, B欄是 運算結果。

要求是 當 A欄儲存格 在 -  前和後是一樣的話, 只保留 第一個 - 前的數字

如果不一樣,那就不用變。 A欄的資料有多有少。

A欄為 資料,B 欄為要求輸出後的結果,跪謝了。

[attach]33377[/attach]
作者: samwang    時間: 2021-6-5 12:25

回復 10# stephenlee

請測試看看,謝謝。

Sub test()
Dim Arr, a, a1
Arr = Range("A2:A" & [A65536].End(3).Row)
For i = 1 To UBound(Arr)
    a = Split(Arr(i, 1), "-")(0)
    a1 = Split(Arr(i, 1), "-")(1)
    If a = a1 Then Arr(i, 1) = a
Next
Range("B2").Resize(UBound(Arr)).NumberFormatLocal = "@"
Range("B2").Resize(UBound(Arr)) = Arr
End Sub
作者: stephenlee    時間: 2021-6-5 13:14

回復  stephenlee

請測試看看,謝謝。

Sub test()
Dim Arr, a, a1
Arr = Range("A2:A" & [A65536] ...
samwang 發表於 2021-6-5 12:25



  這個也是完全符合要求,完美解決了我所需的問題。 非常感激大大一直幫忙,幫我節省了處理資料的時間,十分感謝。

題外話:  大大真的很強。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)