EXCEL

时间:2019-03-08 19:21:03

标签: excel

假设我们有3个单元格,内容分别为“ 123(45)”,“ 456(67)”和“ 789(89)”。是否可以仅基于它们的第一个值即“ 123”,“ 456”,“ 789”来格式化三个单元格?

要明确说明:

enter image description here

如何如图片所示进行格式化,假设我在每个单元格中的每个数字后面都有“(XX)”,

即480(XX),7(XX),112(XX)''''''''

1 个答案:

答案 0 :(得分:1)

如果单元格包含相同的模式,例如: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

编辑

最简单的方法是:

在具有该数据的列旁边的另一列中,输入以下公式:

=NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1))

然后您可以应用数据栏条件格式,在数据栏的条件格式选项内有一个复选框“仅显示栏”,结果将是这样的:

enter image description here

另一种方法是在另一列中输入公式:

=A1&"     "&REPT("|",NUMBERVALUE(LEFT(A1,FIND(" ",A1)-1))/5)

enter image description here

或此

=A8&"     "&REPT("∙",NUMBERVALUE(LEFT(A8,FIND(" ",A8)-1))/5)

enter image description here

没有其他简单的方法可以使数据栏条件格式不接受数组公式。

您仍然可以使用工作表中的宏来执行此操作,该宏具有数据副本并粘贴以下代码:

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

因此,使用此代码,每次将新数据放入列中时,它将自动将其格式设置为下图所示。我已经测试过,它的工作原理只是将其粘贴到您的工作表中,而不是粘贴到模块中,然后根据需要更改范围。

enter image description here

希望有帮助!