excel - EXCEL中每个单元格中受限部分的条件格式
问题描述
假设我们有 3 个单元格,内容分别为“123 (45)”、“456 (67)”和“789 (89)”。是否可以仅根据它们的第一个值来格式化三个单元格,即“123”、“456”、“789”?
说清楚:
假设我在每个单元格中的每个数字后面都有“(XX)”,如何仍然如图所示格式化,
即480(XX)、7(XX)、112(XX)''''''''
解决方案
如果单元格包含相同的模式,例如:123 (45)
那么你可以使用基于公式的条件格式选项并输入这个公式:
=NUMBERVALUE(LEFT(A1,3)) = 123
或者
=NUMBERVALUE(LEFT(A1,3))=B1
B1 如果你想引用某个单元格的值
并进行所需的格式化
如果模式不一样,但例如有些像:123 (45), 1234 (46) 那么:
=NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1)) = 123
或者
=NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1)) =B1
编辑
这样做的简单方法是:
在具有 tha 数据的列旁边的另一列中,输入以下公式:
=NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1))
然后您可以应用数据栏条件格式,在数据栏的条件格式选项内有一个复选框“仅显示栏”,结果将是这样的:
另一种方法是在另一列中输入公式:
=A1&" "&REPT("|",NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1))/5)
或这个
=A8&" "&REPT("∙",NUMBERVALUE(LEFT(A8,FIND(" ",A8)-1))/5)
没有其他简单的方法可以做到这一点,因为数据栏条件格式不接受数组公式。
无论如何,您都可以使用具有数据复制并粘贴以下代码的工作表中的宏来执行此操作:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lRow As Long
Dim data As Range
Set data = ActiveSheet.Range("A:A")
If Not Intersect(Target, data) Is Nothing Then
lRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
Dim arr() As Double
On Error Resume Next
For i = 1 To lRow
Set myrange = ActiveSheet.Range("A" & i)
ReDim Preserve arr(i)
arr(i) = Left(myrange, WorksheetFunction.Find(" ", myrange) - 1)
Next i
Dim MaxValue As Long
MaxValue = WorksheetFunction.Max(arr)
For i = 1 To lRow
Set myrange = ActiveSheet.Range("A" & i)
With myrange.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 180
.Gradient.ColorStops.Clear
End With
With myrange.Interior.Gradient.ColorStops.Add(1)
.Color = RGB(13, 71, 161)
.TintAndShade = 0
End With
With myrange.Interior.Gradient.ColorStops.Add(1 - (arr(i) / MaxValue))
.Color = RGB(13, 71, 161)
.TintAndShade = 1
End With
With myrange.Interior.Gradient.ColorStops.Add(0)
.Color = RGB(255, 255, 255)
.TintAndShade = 1
End With
Next i
End If
End Sub
因此,每次使用此代码在列中添加新数据时,它都会自动将其格式化,如下图所示。我已经测试过,它只需将其粘贴到您的工作表中,而不是在模块中,并根据您的需要更改范围。
希望能帮助到你!
推荐阅读
- mongodb - mongodb 安装。服务启动失败
- mongodb - 在 hos 上创建具有本地存储的 mongo docker 容器
- javascript - RXJS 可以在(客户端)没有服务器的情况下运行吗?
- json - 无法将 json 字符串正确解析为 JavaScript 对象
- c# - 推断或忽略嵌套 C# 接口中的嵌套泛型
- java - 没有 @Query 的 Spring 存储库
- java - java.lang.IllegalArgumentException: fromIndex(x) > toIndex(y)
- html - SVG 文本,tspan 字体大小和居中
- vba - 您如何确定来自 access 2013 的 Outlook 中的邮件项目是否仍处于打开状态
- java - Spring CrudRepository 按结果返回组作为 Map