Google Sheets如何根据单元格填充色匹配日期返回D列对应数值
Excel按单元格填充色匹配行首日期值实现方案
- 前置说明:Excel原生公式无法直接读取单元格填充色属性,需要通过VBA自定义函数实现需求,操作步骤如下:
- 打开VBA编辑器
按下Alt + F11快捷键唤出VBA编辑器,在左侧工程列表右键点击当前工作簿,选择「插入」-「模块」。 - 粘贴自定义函数代码
在弹出的模块编辑窗口中粘贴如下代码:
' 自定义函数:输入行号,返回当前行首个粉色/绿色填充单元格对应第3行的数值 Function GetAirValue(inputRow As Long) As Variant Dim ws As Worksheet Dim scanRange As Range Dim cell As Range ' 绑定当前工作表,可修改为指定工作表名,比如Set ws = Sheets("Sheet1") Set ws = ActiveSheet ' 定义当前行扫描范围,可根据实际表格列范围调整,比如Set scanRange = ws.Range("E" & inputRow & ":Z" & inputRow) Set scanRange = Intersect(ws.Rows(inputRow), ws.UsedRange) For Each cell In scanRange ' 跳过D列本身避免循环引用 If cell.Column <> 4 Then ' 颜色编码可根据实际填充色调整,3为默认粉色,4为默认绿色 If cell.Interior.ColorIndex = 3 Or cell.Interior.ColorIndex = 4 Then GetAirValue = ws.Cells(3, cell.Column).Value Exit Function End If End If Next cell ' 无符合条件的填充单元格返回空值 GetAirValue = "" End Function
- D列调用函数
在D列需要生效的单元格输入公式=GetAirValue(ROW()),按回车即可生效。以你给出的示例为例:T19单元格着色后,D19会自动返回T3单元格的数值4,和需求匹配。
- 补充说明:
- 如果修改填充色后数值没有自动更新,按
F9手动触发重算即可。如果需要自动刷新,可以在对应工作表的代码窗口粘贴如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Me.Calculate End Sub- 如果你的填充色不是默认的粉色/绿色,可以选中对应着色单元格,在VBA编辑器的立即窗口(按
Ctrl + G唤出)输入?ActiveCell.Interior.ColorIndex回车即可获取对应颜色编码,替换上面代码里的3和4即可。 - 如果一行存在多个着色单元格,现有逻辑会返回最左侧着色单元格对应的第3行数值,如有其他逻辑可调整遍历顺序。
- 如果修改填充色后数值没有自动更新,按
内容的提问来源于stack exchange,提问作者Thinh Le
相关产品推荐
相关产品推荐

