Board logo

標題: 如何將同樣號碼的資料寫在另一張工作表的同一列上 [打印本頁]

作者: 千暉尋    時間: 2018-10-10 19:21     標題: 如何將同樣號碼的資料寫在另一張工作表的同一列上

如何將同樣號碼的資料寫在另一張工作表的同一列上
說明:
第1張工作表為計算送印箱子及取回印好杯子數量和計算還有多少箱子在外面的控制表.
第2張工作表”出貨及取貨及銷售”:為相關出貨及取回及銷售空白杯子之資料Y07,Y09,Y11為三種不同尺寸之空白杯子,可能先送去印刷,再取回賣給客戶,如1001(客戶A)及1002(客戶B),也可能直接賣給客戶,如1003(客戶C) 如送印刷時,在F欄會有加註”CUP PRINT”,且無金額資料,是工作表1要收集的資料(數字為正),表示為送出的貨,是要作累加的,而直接賣的,如客戶C就不寫入工作表1
1.        YP開頭(如2002),表示取回印刷後的杯子(各自會對應至Y07,Y09及Y11),亦為應寫入工作表1的數字,表示取回,所以數字為負(即應減去)
2.        Y字頭送印的減去YP字頭的就是還在印刷廠還沒印好的數字
訴求:
A針對同一OS號的資料我只能寫出分多列的型態寫入工作表1,希望能寫在同一列上(如下圖右方)
B.重覆執行程式碼時,工作表1不會寫入重覆的資料
[attach]29516[/attach]
作者: 千暉尋    時間: 2018-10-10 19:26

補上圖片[attach]29517[/attach]
作者: hcm19522    時間: 2018-10-11 10:27

N2:P6 (三項不重複){=IFERROR(INDEX(B:B,SMALL(IF((MATCH($B$2:$B$15&$C$2:$C$15&$D$2:$D$15,$B$2:$B$15&$C$2:$C$15&$D$2:$D$15,)=ROW(B$2:B$15)-1)*($B$2:$B$15<>""),ROW(B$2:B$15)),ROW(A1))),"")

Q2:X6{=IFERROR(IF(MOD(COLUMN(A1),3)=0,"",INDIRECT(TEXT(RIGHT(SMALL(IF((MMULT(($B$2:$D$15=$N2:$P2)*1,{1;1;1})=3)*($E$2:$L$15<>""),COLUMN($E2:$L2)*10001+ROW(E$2:L$15)/1%),INT(COLUMN(A1)/3)*2+MOD(COLUMN(A1),3)),4),"!R0C00"),)),"")

B2:L15是數據
作者: 千暉尋    時間: 2018-10-11 17:09

N26 (三項不重複){=IFERROR(INDEX(B:B,SMALL(IF((MATCH($B$2B$15&$C$2C$15&$D$2D$15,$B$2B$15&$C ...
hcm19522 發表於 2018-10-11 10:27

謝謝大大熱心回覆,因為表是給國外的小姐使用,且是日報表,希望在每個日表寫入VBA,並主動彙總至第1個工作表上,所以想求VBA的作法.
作者: 准提部林    時間: 2018-10-13 11:51

Sub 更新()
Dim Arr, Brr, C&, i&, T1$, T2$, U$, N&
Call 清除
Arr = Range([出貨及取貨!F1], [出貨及取貨!A1].Cells(Rows.Count, 1).End(xlUp))
ReDim Brr(1 To UBound(Arr), 1 To 11)
For i = 2 To UBound(Arr)
    T1 = Arr(i, 1): If T1 = "" Then GoTo 101
    If T1 = "OS" Then
       If Arr(i, 6) <> "PRINT CUP" And Left(Arr(i + 1, 1), 2) <> "YP" Then T2 = "": GoTo 101
       T2 = "P": N = N + 1
       Brr(N, 1) = Arr(i - 1, 3): Brr(N, 2) = Arr(i - 1, 2): Brr(N, 3) = "#" & Arr(i - 1, 1)
    End If
    U = Left(T1, 1) & Right(T1, 1)
    C = Switch(U = "Y9", 4, U = "Y1", 7, U = "Y7", 10, U = U, 0)
    If T2 = "" Or C = 0 Then GoTo 101
    Brr(N, C) = T1:   Brr(N, C + 1) = Arr(i, 3) * IIf(Left(T1, 2) = "YP", -1, 1)
101: Next i
If N = 0 Then Exit Sub
With [出貨結餘!B7:L7].Resize(N)
     .Value = Brr
     .Columns(1).NumberFormatLocal = "m/d"
     .Borders.LineStyle = 1
End With
End Sub
'======================================
Sub 清除()
Sheets("出貨結餘").UsedRange.Offset(6, 0).EntireRow.Delete
End Sub

[attach]29527[/attach]
作者: 千暉尋    時間: 2018-10-13 12:41

Sub 更新()
Dim Arr, Brr, C&, i&, T1$, T2$, U$, N&
Call 清除
Arr = Range([出貨及取貨!F1], [出貨及取 ...
准提部林 發表於 2018-10-13 11:51

謝謝準大,完全符合所求,也感謝有這有論壇!




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