数据拉取返回源条件格式
data pulling returning source conditional formatting
有没有办法复制使用以下公式提取的条件格式单元格的准确色调?
=LARGE(A:A,1)
我从数百行中选出前 10 名,每行都有一个非常特定的色调,揭示了另一种定量顺序,与我订购前 10 名的标准不同。
也许举个例子会更清楚:
**Pets Owned** ` - ` **Maintenance Level**
Dogs ` - ` ` 450 ` - ` 8
Cats ` - ` ` 350 ` - ` 4
Fish ` - ` ` 150 ` - ` 6
Birds ` - ` ` 100 ` - ` 3
Iguanas ` - ` ` 5 ` - ` 14
- 按 B 列有条件地格式化,色标从绿色到红色
假设我只想拉出前 3 个最高维护宠物,同时保持 B 列的原始格式,所以我想看到的是:
维护级别
14 {Red} [Iguanas]
8 {Dark Green} [Dogs]
6 {Yellow} [Fish]
- 图例:期望值,{颜色},[通过相邻列上的 Match/Index 获得的相应动物]
抱歉,这张照片 windows 绝对是截图的笑话(将 xml 转换为 jpg 需要 6 步以上?!)
如果我没记错的话,OP 想要这个:
如果你想玩 Excel VBA...
,我有一个糟糕的解决方案给你
这意味着在 VBA 中构建您自己的 "color-format" 函数 :) makeColor
Public Function makeColor(ByVal x As Integer, ByVal min As Integer, ByVal max As Integer)
Dim r As Integer, g As Integer, b As Integer
' you must fine-tune the cases as you like
b = 0
If (x < (min + max) / 2) Then
r = 255
g = 0
Else
g = 255
r = 0
End If
makeColor = RGB(r, g, b)
End Function
假设您的数据在 "color" 选项卡中并且位于范围内 (B1:B5);硬编码值“0”和“500”代表数据中的最小值和最大值,并且也必须以编程方式定义:
Public Sub cpyColor()
Dim wkRange As Range
Dim c As Range
Set wkRange = ThisWorkbook.Sheets("color").Range("$B:$B")
For Each c In wkRange
c.Interior.Color = makeColor(c.Value, 0, 500)
c.Offset(0, 1).Interior.Color = c.Interior.Color
Next
End Sub
我的 2 个案例 makeColor
函数给出了:
我认为没有 VBA 就无法完成,但作为替代方案,您可以更改目标的条件格式设置规则以匹配源的条件格式设置规则
如果您有 Excel 2010 或更高版本,您可以使用 VBA,使用 Cell 的 DisplayFormat
属性。
我使用了一个简单的过滤器而不是公式,但您也可以使用公式。
我添加了一个带有公式的标题为 MaintRank 的列
=RANK(C2,$C:$C)
然后,例如,如果我想要前 3 个,我只过滤 1
、2
和 3
然后使用 VBA 将其复制到某个新目的地。您可以将下面代码中的 rResults
更改为您想要的任何位置。
您可能还需要根据自己的真实数据进行调整rTable
Option Explicit
Sub CopyVisibleWithCFColor()
Dim rData As Range, rResults As Range
Dim wsData As Worksheet, wsResults As Worksheet
Dim C As Range
Dim I As Long, J As Long
Set wsData = Worksheets("sheet1")
Set wsResults = Worksheets("sheet2")
With wsData
Set rData = .Range(.Cells(1, 1), .Cells(.Rows.Count, "D").End(xlUp))
End With
Set rResults = wsResults.Cells(1, 1)
Set rData = rData.SpecialCells(xlCellTypeVisible)
rResults.Resize(columnsize:=rData.Columns.Count).EntireColumn.Clear
Set rResults = rResults(1)
rData.Copy rResults
Application.CutCopyMode = False
Set rResults = rResults.CurrentRegion
rResults.EntireColumn.ClearFormats
J = 0
For I = 1 To rData.Areas.Count
For Each C In rData.Areas(I).Columns(2).Cells
Debug.Print C.Address
J = J + 1
rResults.Rows(J).Interior.Color = C.DisplayFormat.Interior.Color
Next C
Next I
End Sub
在下面的屏幕截图中,您可以看到 Sheet1 上的原始数据和 Sheet2 上的复制结果。在 sheet1 上,我选择 return 排名第 2、4 和 5 的项目,在 sheet2 上,宏也在整行中着色。显然你可以改变它,如果你不需要它,你不需要也复制 "rank" 列。
有没有办法复制使用以下公式提取的条件格式单元格的准确色调?
=LARGE(A:A,1)
我从数百行中选出前 10 名,每行都有一个非常特定的色调,揭示了另一种定量顺序,与我订购前 10 名的标准不同。
也许举个例子会更清楚:
**Pets Owned** ` - ` **Maintenance Level**
Dogs ` - ` ` 450 ` - ` 8
Cats ` - ` ` 350 ` - ` 4
Fish ` - ` ` 150 ` - ` 6
Birds ` - ` ` 100 ` - ` 3
Iguanas ` - ` ` 5 ` - ` 14
- 按 B 列有条件地格式化,色标从绿色到红色
假设我只想拉出前 3 个最高维护宠物,同时保持 B 列的原始格式,所以我想看到的是:
维护级别
14 {Red} [Iguanas]
8 {Dark Green} [Dogs]
6 {Yellow} [Fish]
- 图例:期望值,{颜色},[通过相邻列上的 Match/Index 获得的相应动物]
抱歉,这张照片 windows 绝对是截图的笑话(将 xml 转换为 jpg 需要 6 步以上?!)
如果我没记错的话,OP 想要这个:
如果你想玩 Excel VBA...
,我有一个糟糕的解决方案给你这意味着在 VBA 中构建您自己的 "color-format" 函数 :) makeColor
Public Function makeColor(ByVal x As Integer, ByVal min As Integer, ByVal max As Integer)
Dim r As Integer, g As Integer, b As Integer
' you must fine-tune the cases as you like
b = 0
If (x < (min + max) / 2) Then
r = 255
g = 0
Else
g = 255
r = 0
End If
makeColor = RGB(r, g, b)
End Function
假设您的数据在 "color" 选项卡中并且位于范围内 (B1:B5);硬编码值“0”和“500”代表数据中的最小值和最大值,并且也必须以编程方式定义:
Public Sub cpyColor()
Dim wkRange As Range
Dim c As Range
Set wkRange = ThisWorkbook.Sheets("color").Range("$B:$B")
For Each c In wkRange
c.Interior.Color = makeColor(c.Value, 0, 500)
c.Offset(0, 1).Interior.Color = c.Interior.Color
Next
End Sub
我的 2 个案例 makeColor
函数给出了:
我认为没有 VBA 就无法完成,但作为替代方案,您可以更改目标的条件格式设置规则以匹配源的条件格式设置规则
如果您有 Excel 2010 或更高版本,您可以使用 VBA,使用 Cell 的 DisplayFormat
属性。
我使用了一个简单的过滤器而不是公式,但您也可以使用公式。
我添加了一个带有公式的标题为 MaintRank 的列
=RANK(C2,$C:$C)
然后,例如,如果我想要前 3 个,我只过滤 1
、2
和 3
然后使用 VBA 将其复制到某个新目的地。您可以将下面代码中的 rResults
更改为您想要的任何位置。
您可能还需要根据自己的真实数据进行调整rTable
Option Explicit
Sub CopyVisibleWithCFColor()
Dim rData As Range, rResults As Range
Dim wsData As Worksheet, wsResults As Worksheet
Dim C As Range
Dim I As Long, J As Long
Set wsData = Worksheets("sheet1")
Set wsResults = Worksheets("sheet2")
With wsData
Set rData = .Range(.Cells(1, 1), .Cells(.Rows.Count, "D").End(xlUp))
End With
Set rResults = wsResults.Cells(1, 1)
Set rData = rData.SpecialCells(xlCellTypeVisible)
rResults.Resize(columnsize:=rData.Columns.Count).EntireColumn.Clear
Set rResults = rResults(1)
rData.Copy rResults
Application.CutCopyMode = False
Set rResults = rResults.CurrentRegion
rResults.EntireColumn.ClearFormats
J = 0
For I = 1 To rData.Areas.Count
For Each C In rData.Areas(I).Columns(2).Cells
Debug.Print C.Address
J = J + 1
rResults.Rows(J).Interior.Color = C.DisplayFormat.Interior.Color
Next C
Next I
End Sub
在下面的屏幕截图中,您可以看到 Sheet1 上的原始数据和 Sheet2 上的复制结果。在 sheet1 上,我选择 return 排名第 2、4 和 5 的项目,在 sheet2 上,宏也在整行中着色。显然你可以改变它,如果你不需要它,你不需要也复制 "rank" 列。