返回列表 上一主題 發帖

[發問] 求助陣列問題

回復 1# K0l1CHEN6
能否請你在上傳一次檔案 我下載下來檔案是壞的 不知道位啥  我也想練習看看 謝謝

TOP

本帖最後由 軒云熊 於 2020-10-9 11:10 編輯

回復 3# K0l1CHEN6

請問 是這樣的邏輯嗎? 或著 你把結果 放上來 我不太明白 抱歉 >"<  
組合折扣 公式 是怎麼算 我不明白


javascript:;

1009.png (17.16 KB)

1009.png

TOP

本帖最後由 軒云熊 於 2020-10-10 23:02 編輯

回復 15# K0l1CHEN6
有空幫我看一下 是不是這樣 謝謝
  1. Public Sub 陣列分組加總練習()

  2. arr = Range(Cells(2, 2).End(xlDown), Cells(2, 2))
  3. Set xD = CreateObject("Scripting.Dictionary")
  4. For i = 1 To UBound(arr, 1)
  5.     For j = 1 To UBound(arr, 2)
  6.         xD(arr(i, j)) = arr(i, j)
  7.     Next j
  8. Next i
  9. Erase arr
  10. arr = Range("a1").CurrentRegion
  11. ReDim Brr(1 To UBound(arr, 1), 1 To UBound(arr, 2))

  12. For Each X In xD
  13.     ReDim Crr(1 To UBound(arr, 1), 1 To UBound(arr, 2))
  14.     If IsArray(T) Then T = ""
  15.     For A = 1 To UBound(arr, 1)
  16.         For A1 = 1 To UBound(arr, 2)
  17.             If arr(A, 2) = X Then
  18.                 Crr(A, A1) = arr(A, A1)
  19.             End If
  20.         Next A1
  21.     Next A

  22.     k = 0: k1 = 0: k2 = 0: k3 = 0
  23.     For A = 2 To UBound(Crr, 1)
  24.         If Crr(A, 4) = "組合折扣" Then
  25.            T = Array(Crr(A, 6), Crr(A, 7), Crr(A, 8), Crr(A, 9))
  26.         End If
  27.         If Crr(A, 2) = X Then
  28.             If Crr(A, 4) <> "組合折扣" Then
  29.                k = k + Crr(A, 6)
  30.                k1 = k1 + Crr(A, 7)
  31.                k2 = k2 + Crr(A, 8)
  32.                k3 = k3 + Crr(A, 9)
  33.             End If
  34.         End If
  35.     Next A
  36.    
  37.     For A = 2 To UBound(Crr, 1)
  38.         If Crr(A, 4) <> "組合折扣" And Crr(A, 4) <> "" Then
  39.             If Crr(A, 6) <> 0 And Crr(A, 7) <> 0 And Crr(A, 8) <> 0 And Crr(A, 9) <> 0 Then
  40.                 If IsArray(T) Then
  41.                     Brr(A - 1, 1) = (T(0) * Round(Crr(A, 6) / k, 3)) + Crr(A, 6)
  42.                     Brr(A - 1, 2) = (T(1) * Round(Crr(A, 7) / k1, 3)) + Crr(A, 7)
  43.                     Brr(A - 1, 3) = (T(2) * Round(Crr(A, 8) / k2, 3)) + Crr(A, 8)
  44.                     Brr(A - 1, 4) = (T(3) * Round(Crr(A, 9) / k3, 3)) + Crr(A, 9)
  45.                 End If
  46.             End If
  47.             If Not IsArray(T) Then
  48.                 Brr(A - 1, 1) = k
  49.                 Brr(A - 1, 2) = k1
  50.                 Brr(A - 1, 3) = k2
  51.                 Brr(A - 1, 4) = k3
  52.             End If
  53.         End If
  54.     Next A
  55. Next X
  56.            
  57. Set xD = Nothing
  58. Erase arr, Crr, T
  59. Range("K2").Resize(UBound(Brr, 1), UBound(Brr, 2)) = ""
  60. Range("K2").Resize(UBound(Brr, 1), UBound(Brr, 2)) = Brr
  61.       
  62. End Sub
複製代碼
javascript:;

test1-A01_1010.rar (19.57 KB)

TOP

回復 15# K0l1CHEN6

剛剛發現 結果跟準大的不一樣   請問 沒有折扣的組別 要怎麼算? 可否舉列  我想知道答案 謝謝

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題