返回列表 上一主題 發帖

請問如何讓其他欄位依照今天日期顯示不同底色

請問如何讓其他欄位依照今天日期顯示不同底色

本帖最後由 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
謝謝

回復 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
複製代碼

TOP

回復  coafort


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



謝謝大大
但是我有上百列
請問這程式是否能用?
謝謝

TOP

回復 3# coafort
        謝謝前輩回覆
上百列是可以的
請前輩 試看看

TOP

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


請問上百列需要改什麼呢?
謝謝大大

TOP

回復 5# coafort


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


TEST_20220922.zip (44.86 KB)
  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
複製代碼

TOP

回復  coafort


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


請問大大
可以設計成不用按篩選
然後會自己篩選嗎
謝謝大大

TOP

回復 6# Andy2483

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


謝謝大大

TOP

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

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

回復 8# coafort


    謝謝前輩回覆
1.後輩對格式化條件不熟,工作空檔正積極學習VBA
2.後學運用觸發方式範例如下
TEST_20220922_1.zip (45.8 KB)

  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
複製代碼

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題