返回列表 上一主題 發帖

[發問] ListBox與排序加總問題

回復 1# starbox520


    樞紐分析表也是不錯的選擇
[attach]25526[/attach]
學海無涯_不恥下問

TOP

回復 18# 准提部林


   
    回大大有辦法把您做的結果顯示在清單方塊做動作嗎
    不好意思問題有點多 == ""
    檔案內有細項說明><

Xl000088.rar (96.48 KB)

TOP

回復 22# Hsieh


回大大  因為之後可能還會再加入資料
如果要用樞紐的話
怕後面每增加一次資料就要重新選取範圍
所以才想說用vba去執行^^

TOP

回復 22# starbox520

還是看不懂如何做!
何況office版本不同, 物件轉成舊版時,listbox無法使用!!!

TOP

本帖最後由 starbox520 於 2016-10-13 15:29 編輯

回復 24# 准提部林
不好意思我補充說明

第一個清單方塊要跑出的

是 CR. PG. BE. LC 資料相同的話

去做 BK.VM.TR.數量 加總

如下圖  這種格式(之前有請大大您教過我的)


第二個清單方塊為我點選第一個清單方塊的內容其中一項時


會跑出資料還未加總前的型態


表二的紅色區塊是想要把我在清單方塊的資料

貼到紅色區塊裡(只是我要秀在清單方塊上可以方便我去做貼上或者跑出第2個清單的機制)

TOP

回復 24# 准提部林

sorry忘了附檔給您

xl000099.zip (87.29 KB)

TOP

[發問] ListBox與排序加總問題

1.工作表2為從WIP抓過來做排序計算的資料

不過在數量這部分不知道是我哪段有問題(要做BK+VM+TR的相加)

2.想在表格"產出"  做出ListBox(還是有其他方法呢)

此ListBox可以列出我現在所選的編號那欄對應的第一排

從"工作表2"的資料列出先與"Package"相同的次要是"BodySize"列出 然後"數量"由大至小

可以貼在"產出"紅色的儲存格,每一個編號都對應到同一欄

在點擊選出的內容可以秀出此筆資料相加前的內容


TTR1表.rar (576.39 KB)

'排列
Sub ArrangeMent()

Dim Arr, Brr, xD, Dn&, T$, N&, i&, j%
Arr = Range([WIP!A1], [WIP!A1].Cells(Rows.Count, 1).End(xlUp)(1, 12))
Set xD = CreateObject("Scripting.Dictionary")
ReDim Brr(1 To UBound(Arr), 1 To 8)
   For i = 2 To UBound(Arr)
   T = Arr(i, 1) & "|" & Arr(i, 5) & "|" & Arr(i, 6) & "|" & Arr(i, 7)
   Dn = xD(T)
   If Dn = 0 Then
      N = N + 1: Dn = N: xD(T) = N
      For j = 1 To 4: Brr(Dn, j) = Arr(i, Array(1, 5, 6, 7)(j - 1)): Next
   End If
    j = Int(InStr("----BK-VM-TR-", "-" & Split(Arr(i, 3), "_")(1) & "-") / 3)
     If j > 0 Then
      Brr(Dn, j + 4) = Brr(Dn, j + 4) + Arr(i, 11)
       Brr(Dn, 8) = Brr(Dn, 8) + Arr(i, 11)
     End If
Next i
If N = 0 Then Exit Sub
    With Sheets("工作表2")
   .[A2].Resize(N, 8) = Brr
     Application.Goto .[A1]
End With
End Sub

加上資料加總問題  以做排序出來了

只是想在做表單

做貼上的效果
Private Sub CommandButton1_Click()

    Dim AA(), xi As Integer
    With frmSelector
        For xi = 0 To .ListCount - 1
            '  判斷列表框 (ListBox1) 是否有被點選
            If .Selected(xi) = True Then
                '  取出該行之數據,存入 AA 陣列中
                AA = Application.Index(frmSelector.List, xi + 1)
                 'With Sheets("sheet3").Range("A" & Rows.Count).Offset(1)  '.Offset(1)  '**還是下一儲存格
                 With Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1)  '.Offset(1)  '**還是下一儲存格
                    .Cells = .Cells + AA
                    '還是 .Cells = .Cells + AA '資料是累積的
                End With
            End If
        Next
    End With

End Sub

只是試了很久都沒有反應 ...
0992.rar (487.86 KB)

TOP

回復 28# starbox520
  1. Private Sub CommandButton1_Click()
  2.     Dim AA(), xi As Integer
  3.     ' With frmSelector 這是表單物件不是ListBox   **會有錯誤的
  4.     'With frmSelector.lstSelector  也可用這表單物的子物件(ListBox)
  5.     With lstSelector   '物件(ListBox)
  6.         If .ListIndex > 0 Then         'ListBox清單中選取列的索引值 ,   -1 表沒有選取
  7.         '**  0 為表頭 如要選取 可改為 If .ListIndex > -1 Then
  8.             
  9.             '  取出該行之數據,存入 AA 陣列中
  10.             AA = Application.Index(.List, .ListIndex + 1)
  11.             With Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1)  '.Offset(1)  '**還是下一儲存格
  12.                         .Cells.Resize(, 9) = AA
  13.                     '還是 .Cells = .Cells + AA '資料是累積的
  14.                     '***AA為陣列不可用此語法**
  15.                 End With
  16.             End If
  17.     End With
  18. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 29# GBKEE


    原來是我修改錯地方..
    可以再問一下  
    因為我想用工作表2的資料去對應到"TR排機&產出"
    每一機台編號的第一排都有資料
    用"工作表2"的資料對應到上方每一個篩好的資料再作排序(Package.BodySize.LC.數量由大至小)再把處理好的資料用ListBox顯示出來
    我知道可以用多重篩選去執行...
    但今天如果上方篩好的資料跟之前的不一樣(Ex:機台編號第2個)
    以小弟功力又在此卡住了.....
    有什麼辦法可以偵測我現在選的那一欄位的機台編號可以對應到他第一排資訊去做排列呢...
   
    T0923.zip (911.74 KB)

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題