返回列表 上一主題 發帖

[發問] 取出包材"+"or"-"號之後的數值

回復 2# PJChen

巨集請放於"包材驗算"檔案
資料位置以原附件設定,如有不同請自行調整

Sub ex()
Dim Arr As Variant, d As Object, a As Variant, b As Variant, X%, Y%
Set d = CreateObject("Scripting.Dictionary")
With Workbooks.Open(ThisWorkbook.Path & "\" & "包材報表.xlsx").Sheets("包材")
   Set Arr = .Range(.[b5], .[P7])   '資料範圍
End With
For X = 1 To Arr.Rows.Count
   For Y = 4 To Arr.Columns.Count
      If Arr(X, Y).HasFormula Then    '判斷儲存格是否為公式
         If Arr(X, Y).FormulaR1C1Local Like "*+*" Then     '判斷公式內是否為"+"
            d(Arr(X, 1) & Arr(X, Y).Offset(-3 - X)) = Split(Arr(X, Y).FormulaR1C1Local, "+")(1)  '資料寫入字典
         Else                                              '判斷公式內為"-"
            d(Arr(X, 1) & Arr(X, Y).Offset(-3 - X)) = "-" & Split(Arr(X, Y).FormulaR1C1Local, "-")(1)   '資料寫入字典
         End If
      End If
   Next
Next
Workbooks("包材報表.xlsx").Close False
For Each a In Range([C16], [C18])      '包材區間
   For Each b In Range([F2], [F2].End(2))   '日期區間
      If d.exists(a & b) Then Cells(a.Row, b.Column) = d(a & b)  '將字典資料寫入相符的儲存格
   Next
Next
Set d = Nothing
End Sub

TOP

回復 4# PJChen

1.因為資料欄位裡有的欄位並沒有"+","-",卻寫成"=2200"所以被誤判為公式(如:多莓果紙箱(片),無加糖紙箱(片))
將判斷式增加 "-"的條件,只要沒有"+" & "-"就不分拆
    If Arr(X, Y).HasFormula Then    '判斷儲存格是否為公式
         If Arr(X, Y).FormulaR1C1Local Like "*+*" Then     '判斷公式內是否為"+"
            d(Arr(X, 1) & Arr(X, Y).Offset(-3 - X)) = Split(Arr(X, Y).FormulaR1C1Local, "+")(1)  '資料寫入字典
         ElseIf Arr(X, Y).FormulaR1C1Local Like "*-*" Then '判斷公式內為"-"
            d(Arr(X, 1) & Arr(X, Y).Offset(-3 - X)) = "-" & Split(Arr(X, Y).FormulaR1C1Local, "-")(1)   '資料寫入字典
         End If
      End If
2.包材報表有"封箱膠帶(條)"但包材驗算裡沒有"封箱膠帶(條)"而是"封箱膠帶(卷)"

TOP

回復 7# PJChen

錯誤原因是因為
Set Arr = .Range(.[b5], .[AI11]) 變成 Set Arr = .Range(.[b2], .[AI11])
Offset位置修改即可
If Arr(X, Y).FormulaR1C1Local Like "*+*" Then     '判斷公式內是否為"+"
            d(Arr(X, 1) & Arr(X, Y).Offset(-X)) = Split(Arr(X, Y).FormulaR1C1Local, "+")(1)   '資料寫入字典
            
            ElseIf Arr(X, Y).FormulaR1C1Local Like "*-*" Then '判斷公式內為"-"
            d(Arr(X, 1) & Arr(X, Y).Offset(-X)) = "-" & Split(Arr(X, Y).FormulaR1C1Local, "-")(1)    '資料寫入字典
         End If

TOP

回復 10# PJChen


  難道你沒有發現驗算檔案的日期已經是4月嗎
  而包材的日期還是3月,月份都不一樣了,如何相符?

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題