我想查看多年的数据表来查找特定颜色的单元格。
人类多年来一直没有选择相同的细胞颜色(它们可能与人眼相同,但具有不同的RGB值)。
如果我有一个内部颜色为RGB(255,23,50)的单元格,有没有办法创建一个颜色向量来查看单元格的内部颜色是否落在它上面?我想创建一个+/- 15个RGB点的矢量,所以如果我要搜索RGB(255,23,50)的单元格,我想要RGB(255,38,65)和RGB(240,8)之间的矢量,35)。
我可以使用IF语句来查看颜色是否落在这两个值之间,但我可以使用颜色向量来处理更多应用程序(如果需要更改代码,代码将更容易修改)。
此if语句有效:
DB_HOST=localhost
DB_DATABASE=Your_Database_Name
DB_USERNAME=Your_Database_Username
DB_PASSWORD=Your_Database_Password
我正在寻找更多的内容:
If ActiveWorkbook.Worksheets("Sheet1").Range("e5").Interior.Color >= RGB(240, 8, 35) And ActiveWorkbook.Worksheets("Sheet1").Range("e5").Interior.Color <= RGB(255, 38, 65) Then
MsgBox ("yes")
Else
MsgBox ("no")
End If
答案 0 :(得分:1)
这应该做:
Function IsInVector(srcColor, newColor, lOffset As Long) As Boolean
Dim lSrcColor As Long
Dim lNewColor As Long
Dim lTemp As Long
lSrcColor = CLng(srcColor)
lNewColor = CLng(newColor)
lTemp = (lSrcColor - lNewColor) / 65536
lTemp = Abs(Round(lTemp, 0))
If lOffset <> lTemp Then
IsInVector = False
Else
IsInVector = True
End If
End Function
'/ Example usage::::
Sub test()
Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 38, 65), 15) '~~~> True
Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 43, 63), 15) '~~~> False
Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 38, 65), 15) '~~~> True
End Sub