Board logo

標題: 利用日期來加總當日金額出錯 [打印本頁]

作者: coafort    時間: 2022-9-22 14:35     標題: 利用日期來加總當日金額出錯

請問各位大大
我要計算的欄位是BG欄位
判斷是AO欄位
我的計算式如下:
=SUMPRODUCT((AO3:AO39=TODAY())*BG46:BG82)
但是我AO欄位是用計算式顯示日期
=IF(AS3="","",IF(AO3="",TEXT(TODAY(),"YYYY/mm/dd"),AO3))
導致SUMPRODUCT無法判斷日期
請問大大有方法嗎
謝謝
作者: hcm19522    時間: 2022-9-23 09:57

=SUMPRODUCT((AO3:AO39-TODAY()=0)*BG46:BG82)
作者: coafort    時間: 2022-9-23 10:09

回復 2# hcm19522

報告大大
不行
結果是0
因為我的日期不是手動輸入的
是公式
導致SUMPRODUCT無法判斷AO欄位日期(因為是公式)
請問大大有解方嗎?
謝謝大大
作者: Andy2483    時間: 2022-9-23 15:55

回復 3# coafort
謝謝前輩發表此主題
請前輩試試看
1.AO3:AO39格式設為yyyy/m/d;@
2.AO3設公式 =IF(AS3="","",TODAY())
3.下刷到AO39
[attach]35230[/attach]
[attach]35231[/attach]
[attach]35232[/attach]
今日習得=SUMPRODUCT()
  1. Option Explicit
  2. Sub TEST_1()
  3. '[AS3:AS39]變更 觸發
  4. '讓[AO3:AO39]今天日期的AO底色不同,對應[BG46:BG82]底色不同也不同
  5. '只總計[AO3:AO39]是今日的,對應[BG46:BG82]數值在BG2
  6. Application.ScreenUpdating = False
  7. Dim i
  8. [BG2] = ""
  9. For i = 3 To 39
  10.    If Cells(i, "AO") = Date Then
  11.       Cells(i, "AO").Interior.ColorIndex = 17
  12.       Cells(i, "BG").Item(44, 1).Interior.ColorIndex = 17
  13.       [BG2] = [BG2] + Cells(i, "BG").Item(44, 1)
  14.       Else
  15.          Cells(i, "AO").Interior.ColorIndex = xlNone
  16.          Cells(i, "BG").Item(44, 1).Interior.ColorIndex = xlNone
  17.    End If
  18. Next
  19. End Sub
  20. Sub TEST_2()
  21. '[AS3:AS39]變更 觸發
  22. '讓[AO3:AO39]今天日期的AO底色不同,對應[BG46:BG82]底色不同也不同
  23. '只總計[AO3:AO39]是今日的,對應[BG46:BG82]數值在BG2
  24. Application.ScreenUpdating = False
  25. Dim i As Range, Y
  26. Set Y = CreateObject("Scripting.Dictionary")
  27. [BG2] = ""
  28. For Each i In Range([AO3], [AO82])
  29.    Y.Add i, i.Item(44, 19)
  30.    If i = Date Then
  31.       i.Interior.ColorIndex = 35
  32.       i.Item(44, 19).Interior.ColorIndex = 35
  33.       [BG2] = [BG2] + Y(i)
  34.       Else
  35.          i.Interior.ColorIndex = xlNone
  36.          i.Item(44, 19).Interior.ColorIndex = xlNone
  37.    End If
  38. Next
  39. End Sub
  40. Sub TEST_3()
  41. '[AS3:AS39]變更 觸發
  42. '讓[AO3:AO39]今天日期的AO底色不同,對應[BG46:BG82]底色不同也不同
  43. '只總計[AO3:AO39]是今日的,對應[BG46:BG82]數值在BG2
  44. Application.ScreenUpdating = False
  45. Dim R&, Y, Z As Range, xR As Range
  46. Set Y = CreateObject("Scripting.Dictionary")
  47. [BG2] = ""
  48. Set Z = Range([AO3], [BG82])
  49. Z.Interior.ColorIndex = xlNone
  50. For Each xR In Z
  51.    Y(xR.Value) = Y(xR.Value) + xR.Item(44, 19).Value
  52.    If xR = Date Then
  53.       xR.Interior.ColorIndex = 38
  54.       xR.Item(44, 19).Interior.ColorIndex = 38
  55.    End If
  56. Next
  57. [BG2] = Y(Date)
  58. End Sub
複製代碼

作者: coafort    時間: 2022-9-24 07:41

回復 4# Andy2483


謝謝大大
比較需要可以不用按篩選
直接自動判斷的
作者: hcm19522    時間: 2022-9-24 09:56

回復 3# coafort


    =SUMPRODUCT(IFERROR(AO3:AO39-TODAY()=0,)*BG46:BG82)
作者: coafort    時間: 2022-9-24 12:16

回復 6# hcm19522

報告大大
出現#name?錯誤
謝謝大大
作者: 准提部林    時間: 2022-9-24 16:07

=SUMPRODUCT(Isnumber(0/(AO3:AO39-TODAY()=0))*BG46:BG82)
作者: coafort    時間: 2022-9-24 17:43

本帖最後由 coafort 於 2022-9-24 17:51 編輯

回復 8# 准提部林


謝謝大大
可以用
但是
如果欄位是空白
會出現#VALUE!
因為我BG46:BG82是用=IF(AS41="","",...............
如果改為=IF(AS41="",0,...............
是可以解
那如果要保留用=IF(AS41="","",...............
該怎麼修改呢?
感恩大大
作者: 准提部林    時間: 2022-9-24 19:17

回復 9# coafort


=SUMPRODUCT(--Isnumber(0/(AO3:AO39-TODAY()=0)),BG46:BG82)
作者: coafort    時間: 2022-9-25 06:40

回復 10# 准提部林

哇~
版大大真的是神人也
太強大了
真是太太太感恩大大了:D




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