返回列表 上一主題 發帖

物品分類

物品分類

是否能依物品下去分類?

物品.rar (7.6 KB)

(輸入編號12024) google網址:https://hcm19522.blogspot.com/
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 7# 准提部林


    謝謝論壇,謝謝前輩指導
後學以 前輩的方案改成以不同(函數,方法,語法....等)達到相同目的,學習到很多知識
學習方案如下,請前輩再指導

Option Explicit
Sub TEST_1()
Dim Brr, Crr, C, A, i&, R&, M&, j%, U%
[J:N].ClearContents
A = Split(Replace([I1], Left([I1], 1), "_" & Left([I1], 1)), "_")
U = UBound(A): If U = -1 Then Exit Sub
Brr = Range([F1], [B65536].End(3))
ReDim Crr(1 To UBound(Brr), 1 To U)
For j = 1 To U
   C = Application.Match(A(j), [B1:H1], 0)
   If IsError(C) Then Exit Sub Else R = 1
   Crr(R, j) = Brr(1, 1) & "(" & A(j) & ")"
   For i = 1 To UBound(Brr)
      If Val(Brr(i, C)) > 0 Then
         R = R + 1
         Crr(R, j) = Brr(i, 1)
      End If
   Next
   If R > M Then M = R
Next
If M > 0 Then [J1].Resize(M, U) = Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# 准提部林


  感謝大大的回覆...
原來還有這的用法

TOP

回復 8# sillykin

instr 及 公式的 find 用法類似

msgbox instr("ACFT", "A") '--- =1
msgbox instr("_ACFT", "A") '--- =2
msgbox instr("_BACT", "")  '--- = 1

加 "_", 避免空字符返回1的誤判

TOP

謝謝大大的協助
但這句語法不太懂
For C = 2 To UBound(Arr, 2)
    If InStr("_" & T, Arr(1, C)) < 2 Then GoTo c01
    Cn = Cn + 1: Rn = 0

TOP

回復 6# sillykin
Sub TEST()
Dim Arr, Brr, R&, Rn&, C&, Cn&, T$, N&
[J2:N6000].ClearContents
T = [i1]: If T = "" Then Exit Sub
Arr = Range([F1], [B65536].End(xlUp))
ReDim Brr(1 To UBound(Arr), 1 To UBound(Arr, 2))
For C = 2 To UBound(Arr, 2)
    If InStr("_" & T, Arr(1, C)) < 2 Then GoTo c01
    Cn = Cn + 1: Rn = 0
For R = 2 To UBound(Arr)
    If Val(Arr(R, C)) > 0 Then
       Rn = Rn + 1: Brr(Rn, Cn) = Arr(R, 1)
       If Rn > N Then N = Rn
    End If
Next R
c01: Next C
If N > 0 Then [j2].Resize(N, Cn) = Brr
End Sub


'=========================

TOP

Sub TEST()
Dim Arr, R&, C&, T$, N&
[J2:J6000].ClearContents
T = [i1]: If T = "" Then Exit Sub
Arr = Range([F1], [B65536].End(xlUp))
For C = 2 To UBound(Arr, 2)
    If Arr(1, C) <> T Then GoTo c01
For R = 2 To UBound(Arr)
    If Val(Arr(R, C)) > 0 Then N = N + 1: Arr(N, 1) = Arr(R, 1)
Next R
c01: Next C
If N > 0 Then [j2].Resize(N) = Arr
End Sub
但試過做二個上述分別執行,方法可行,但是否能一次性執行或簡單方式呢?

TOP

回復 4# 准提部林
感謝大大的回覆...
但還有一個小問題,是否能幫解決,如果要出現二種,是否能依選擇種類,列出物品名稱

666.jpg (110.97 KB)

666.jpg

物品-109.8.31.rar (8.42 KB)

TOP

Sub TEST()
Dim Arr, R&, C&, T$, N&
[J2:J6000].ClearContents
T = [i1]: If T = "" Then Exit Sub
Arr = Range([F1], [B65536].End(xlUp))
For C = 2 To UBound(Arr, 2)
    If Arr(1, C) <> T Then GoTo c01
For R = 2 To UBound(Arr)
    If Val(Arr(R, C)) > 0 Then N = N + 1: Arr(N, 1) = Arr(R, 1)
Next R
c01: Next C
If N > 0 Then [j2].Resize(N) = Arr
End Sub


'=============================

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題