Board logo

標題: 請問如何讓其他欄位依照今天日期顯示不同底色 [打印本頁]

作者: coafort    時間: 2022-9-21 14:30     標題: 請問如何讓其他欄位依照今天日期顯示不同底色

本帖最後由 coafort 於 2022-9-21 14:34 編輯

請問各位大大
我AO這個欄位是日期
BA這個欄位是數值
我想讓今天日期的BA底色不同
比方
AO3是2022/9/20 BA3欄位底色正常
AO4是2022/9/21 BA4欄位底色變成紫色
請問該如何設計?
另外請教
如何設計可以只總計今日BA數值
比方
AO3是2022/9/20 BA3數值4
AO4是2022/9/21 BA4數值5
AO5是2022/9/21 BA5數值6
然後AB2顯示BA4+BA5
謝謝
作者: Andy2483    時間: 2022-9-21 16:48

回復 1# coafort


    謝謝前輩發表此主題
VBA方法供參考
後學練習3種方法
  1. Option Explicit
  2. Sub TEST_1()
  3. '讓今天日期的BA底色不同
  4. '只總計AO欄是今日的BA數值在BA2
  5. Application.ScreenUpdating = False
  6. Dim i
  7. [BA2] = ""
  8. For i = 3 To Cells(Rows.Count, "AO").End(xlUp).Row
  9.    If Cells(i, "AO") = Date Then
  10.       Cells(i, "AO").Interior.ColorIndex = 17
  11.       [BA2] = [BA2] + Cells(i, "BA")
  12.       Else
  13.          Cells(i, "AO").Interior.ColorIndex = xlNone
  14.    End If
  15. Next
  16. End Sub
  17. Sub TEST_2()
  18. '讓今天日期的BA底色不同
  19. '只總計AO欄是今日的BA數值在BA2
  20. Application.ScreenUpdating = False
  21. Dim i As Range, Y
  22. Set Y = CreateObject("Scripting.Dictionary")
  23. [BA2] = ""
  24. For Each i In Range([AO3], Cells(Rows.Count, "AO").End(3))
  25.    Y.Add i, i.Item(1, 13)
  26.    If i = Date Then
  27.       i.Interior.ColorIndex = 17
  28.       [BA2] = [BA2] + Y(i)
  29.       Else
  30.          i.Interior.ColorIndex = xlNone
  31.    End If
  32. Next
  33. End Sub
  34. Sub TEST_3()
  35. '讓今天日期的BA底色不同
  36. '只總計AO欄是今日的BA數值在BA2
  37. Application.ScreenUpdating = False
  38. Dim R&, Y, Z As Range, xR As Range
  39. Set Y = CreateObject("Scripting.Dictionary")
  40. [BA2] = ""
  41. Set Z = Range([AO3], Cells(Rows.Count, "AO").End(3))
  42. Z.Interior.ColorIndex = xlNone
  43. For Each xR In Z
  44.    Y(xR.Value) = Y(xR.Value) + xR.Item(1, 13).Value
  45.    If xR = Date Then
  46.       xR.Interior.ColorIndex = 17
  47.    End If
  48. Next
  49. [BA2] = Y(Date)
  50. End Sub
複製代碼

作者: coafort    時間: 2022-9-21 18:40

回復  coafort


    謝謝前輩發表此主題
VBA方法供參考
後學練習3種方法
Andy2483 發表於 2022-9-21 16:48



謝謝大大
但是我有上百列
請問這程式是否能用?
謝謝
作者: Andy2483    時間: 2022-9-21 19:00

回復 3# coafort
        謝謝前輩回覆
上百列是可以的
請前輩 試看看
作者: coafort    時間: 2022-9-22 07:14

回復  coafort
        謝謝前輩回覆
上百列是可以的
請前輩 試看看
Andy2483 發表於 2022-9-21 19:00


請問上百列需要改什麼呢?
謝謝大大
作者: Andy2483    時間: 2022-9-22 08:37

回復 5# coafort


    謝謝前輩回覆
簡易製作模擬情境範例,請前輩測試看看
[attach]35226[/attach]

[attach]35225[/attach]
  1. Sub 亂數佈陣()
  2. Dim Brr(1 To 1000, 1 To 13), i, E
  3. Cells.Interior.ColorIndex = xlNone
  4. Call 清除篩選

  5. Brr(1, 1) = "日期"
  6. Brr(1, 13) = "今日合計"
  7. For i = 2 To UBound(Brr)
  8.    Brr(i, 1) = "=TODAY() + " & Int(Rnd() * 100) Mod 5
  9.    Brr(i, 13) = Int(Rnd() * 100)
  10. Next
  11. With [AO2].Resize(UBound(Brr), UBound(Brr, 2))
  12.    .Value = Brr
  13.    .Value = .Value
  14. End With
  15. End Sub
  16. Sub 篩選今天()
  17. Call 清除篩選

  18. If Application.Version >= 12 Then
  19.    Selection.AutoFilter Field:=41, Criteria1:= _
  20.         xlFilterToday, Operator:=xlFilterDynamic
  21.    Else
  22.       uDATE = Date
  23.       Selection.AutoFilter Field:=41, Criteria1:=uDATE, Operator:=xlAnd
  24. End If
  25. End Sub
  26. Sub 清除篩選()
  27. If Sheets(1).AutoFilter Is Nothing Then
  28.    [A2:BA2].AutoFilter
  29.    Else
  30.    If Sheets(1).FilterMode = True Then Sheets(1).ShowAllData
  31. End If
  32. End Sub
複製代碼

作者: coafort    時間: 2022-9-22 08:53

回復  coafort


    謝謝前輩回覆
簡易製作模擬情境範例,請前輩測試看看
Andy2483 發表於 2022-9-22 08:37


請問大大
可以設計成不用按篩選
然後會自己篩選嗎
謝謝大大
作者: coafort    時間: 2022-9-22 09:14

回復 6# Andy2483

還是說設定格式化條件
有辦法設定公式
讓今天日期的指定欄位變色?


謝謝大大
作者: hcm19522    時間: 2022-9-22 09:43

https://blog.xuite.net/hcm19522/twblog/588394112

參考~~
作者: Andy2483    時間: 2022-9-22 09:53

本帖最後由 Andy2483 於 2022-9-22 09:57 編輯

回復 8# coafort


    謝謝前輩回覆
1.後輩對格式化條件不熟,工作空檔正積極學習VBA
2.後學運用觸發方式範例如下
[attach]35228[/attach]

[attach]35227[/attach]
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3.    If .Column = [AO3].Column And .Count = 1 And .Row >= 3 Then
  4.       Call TEST_1
  5.       
  6.    End If
  7. End With
  8. End Sub
複製代碼

作者: coafort    時間: 2022-9-22 13:58

參考~~
hcm19522 發表於 2022-9-22 09:43



謝謝大大
已經用=(AO34-TODAY()=0)
解決了顯示問題
計算問題還沒解決
計算問題我是用這個
=SUMPRODUCT((AO3:AO39=TODAY())*BG46:BG82)
但是我AO欄位是用計算式顯示日期
=IF(AS3="","",IF(AO3="",TEXT(TODAY(),"YYYY/mm/dd"),AO3))
導致SUMPRODUCT無法判斷
請問大大有方法嗎
謝謝
作者: coafort    時間: 2022-9-22 14:00

回復  coafort


    謝謝前輩回覆
簡易製作模擬情境範例,請前輩測試看看
Andy2483 發表於 2022-9-22 08:37


謝謝大大
VB真的很強
只是我對VB真的一竅不通:Q
作者: Andy2483    時間: 2022-9-22 15:11

謝謝大大
VB真的很強
只是我對VB真的一竅不通
coafort 發表於 2022-9-22 14:00



    一起學習!
後學也是從錄製開始學起的,學10年了才懂皮毛!
努力學習,樂此不疲,勤能補拙!

GOOGLE搜尋:巨集錄製
就會有很多教學影片

科技的進步源於惰性
時間該花在更有意義的事!




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