返回列表 上一主題 發帖

[發問] 資料比對後填入相應資料以及公式

回復 1# agietron

我也來練習一下,試試看
Sub ex()
Dim arr As Variant, a As Variant, b As Variant
Dim d As Object, x%, y%, DSC%
Set d = CreateObject("scripting.dictionary")
DSC = InputBox("輸入折扣%", "折扣", "60")
With Sheets("工作表1")
   With .Range(.[a1], [k1].End(4))
      .Borders.LineStyle = xlLineStyleNone
      .UnMerge
      .ClearContents
   End With
   For Each a In .Range(.[O1], .[O1].End(4))
      If Not d.exists(a.Value) Then d(a.Value) = ""
   Next
End With
For x = 1 To Sheets.Count - 1
   With Sheets(x)
      For Each a In .UsedRange
         If d.exists(a.Value) Then
            For Each b In Array(Array("C", "S220"), Array("M", "M520"), Array("N", "N620"), Array("A", "S220焊接"), Array("H", "HSS"), Array("K", "HSS-Co"), Array("S", "SKH"))
               If b(0) = Left(a.Value, 1) Then d(a.Value) = b(1): Exit For
            Next
            arr = Array(.[a1] & "--" & .Name & "第" & a.Row & "列", Chr(10))
            For y = 1 To .[a2].End(2).Column
               ReDim Preserve arr(0 To UBound(arr) + 1)
               arr(UBound(arr)) = .Cells(2, y) & "*" & .Cells(a.Row, y) & " "
            Next
            d(a.Value) = Array(d(a.Value), Join(arr, ""), "", "", "", "", "", "=Roundup((" & a.Offset(, 1).Value & " * " & DSC / 100 & "), -1)", "", a.Value)
         End If
      Next
   End With
Next
With Sheets("工作表1")
   .[b1].Resize(d.Count, 10) = Application.Transpose(Application.Transpose(d.items))
   With .Range([a1], [k1].End(4))
      For x = 1 To .Rows.Count
         .Cells(x, 1) = x
         .Cells(x, 3).Resize(, 5).Merge
         .Cells(x, 10) = "=Sum(I" & x & "*H" & x & ")"
      Next
      .Borders.LineStyle = xlContinuous
   End With
End With
End Sub

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題