返回列表 上一主題 發帖

[發問] 讓公式的值,直接帶入儲存格

回復 69# PJChen

1) A欄月份2020..6有何做用??? 改成202006不是更直接, 排序也沒問題!

2) 公式是由上而下累計的, 指定日期可能會有誤差發生? 不太可靠!

3) =IF(COUNTIF(北區!$B$3:$B3,北區!$B3)=1,SUMIFS(台中!$D:$D,台中!$B:$B,"大",台中!$A:$A,北區!$B3),IF(COUNTIF(北區!$B$3:$B3,北區!$B3)=2,SUMIFS(新竹!$D:$D,新竹!$B:$B,"大",新竹!$A:$A,北區!$B4),IF(COUNTIF(北區!$B$3:$B3,北區!$B3)=3,SUMIFS(南區!$D:$D,南區!$B:$B,"大",南區!$A:$A,北區!$B5),"")))
工作表只有"北區", 其它不見, 怎測試程式及公式???

提問前應再次確認給的資料及規則說明是否完整,
僅從公式及程式碼中去解讀需求規則, 是要花更多時間的~~

TOP

本帖最後由 准提部林 於 2020-6-25 10:11 編輯

很麻煩的表格~~如果每天都要處理~~很累吧!!!
公式之間有互相引用, 所以上面的方法都會出錯的~~
若用逐格填入~~不會快到哪???

看發帖的檔案有不少版本, 公司應有一定的規模, 為何不請專業的去設計?
時間就是金錢, 除了浪費時間精神體力外, 資料也可能算錯!!!
我們有空也只能稍幫幾許, 但總不能這樣無止境的做, 一切還是要靠自己~~

弄了兩種版本,
1) 字典+陣列版, 寫一半本想放棄, 因為可能(應該是)看不懂程式碼, 給了也沒用吧!! 太複雜~~
Xl0000140(字典+陣列).rar (45.62 KB)

2) 輔助公式版, 能增進多少速度, 沒實測
Xl0000140(輔助公式).rar (56.41 KB)

所有的計算都從上面帖子中的公式用猜的(幾乎每次猜), 依樣畫葫, 自行去修正~~


======================================================

TOP

回復 77# PJChen

不研究公式是對或錯, 也沒法驗證, 照抄!!! 若有誤自行去修改  

Sub 理貨訂購量()
Dim Rw&, xR As Range, xD, xH As Range, c$, Fx$
Rw = Cells(Rows.Count, "K").End(xlUp).Row
If Rw <= 2 Then Exit Sub
Set xD = CreateObject("Scripting.Dictionary")
xD("全都") = "=SUMIFS(網單.全都!$I:$I,網單.全都!$C:$C,BF理貨!$D2," & _
           "網單.全都!$K:$K,BF理貨!$C2)+IF(BF理貨!$R$283=BF理貨!$B$283,BF理貨!$R2,0)"
xD("統統") = "=SUMIFS(網單.統統!$R:$R,網單.統統!$M:$M,BF理貨!$D2,網單.統統!$AC:$AC,BF理貨!$C2," & _
          "網單.統統!$AE:$AE,BF理貨!$B$1)+IF(BF理貨!$R$1=BF理貨!$B$1,BF理貨!$R2,0)"
xD("德QQK") = "=SUMIF(網單.德QQK!$E:$E,BF理貨!$D2,網單.德QQK!$G:$G)+IF(BF理貨!$R$388=BF理貨!$B$388,BF理貨!$R2,0)"
xD("M社") = "=SUMPRODUCT((網單.M社!$R$2:$R$300=BF理貨!$D2)*(網單.M社!$AP$2:$AP$300))+" & _
           "IF(BF理貨!$R$561=BF理貨!$B$561,BF理貨!$R2,0)"
xD("得來") = "=SUMIFS(網單.得來!$L:$L,網單.得來!$H:$H,BF理貨!$D2,網單.得來!$O:$O,BF理貨!$C2)" & _
           "+IF(BF理貨!$R$420=BF理貨!$B$420,BF理貨!$R2,0)"
xD("W康") = "=SUMPRODUCT((網單.W康!$C$6:$C$298=BF理貨!$D2)*(網單.W康!$D$6:$D$298))+" & _
           "IF(BF理貨!$R$508=BF理貨!$B$508,BF理貨!$R2,0)"

For Each xR In Range("K2:K" & Rw)
    If xR = "品名" Then Set xH = xR(2, 7): c = Range("A" & xR.Row): GoTo 101
    If xR = "合計" Then
       Fx = xD(c)
       If c = "" Or Fx = "" Then GoTo 101
       [Q2].Formula = Fx
       With Range(xH, xR(0, 7)) 'Q欄填入公式
            .FormulaR1C1 = [Q2].FormulaR1C1
            .Value = .Value
            .Replace 0, "", 1  '*****(1,完全符合)
       End With
       c = ""
    End If
101: Next
[Q2] = "訂購數"
End Sub


======================================

TOP

回復 79# PJChen

改下:
If xR = "品名" Then Set xH = xR(2, 7): c = Range("A" & xR.Row + 1).Value: GoTo 101

TOP

        靜思自在 : 話多不如話少,話少不如話好。
返回列表 上一主題