我在 E 列中有一组固定的值(0%、20%、40%、60%、80% 和 100%)。
如果我用上述任意值填充 E 列中的单元格,则单元格 G 应该从另一个单元格中选择格式。
例如,
if I fill 0 in E3, the cell G3 should pick formatting from H3
if I fill 20 in E3, the cell G3 should pick formatting from H3
if I fill 40 in E3, the cell G3 should pick formatting from I3
if I fill 60 in E3, the cell G3 should pick formatting from J3
if I fill 80 in E3, the cell G3 should pick formatting from K3
if I fill 100 in E3, the cell G3 should pick formatting from L3
我知道可以通过一系列条件格式来实现,但做起来有点困难。另外,想看看是否有一个简单的答案?
答案1
就像这样,下面是一个简单的 VBA 宏,用于进行格式化。它是否简单由您决定。可以将类似的东西放入 Worksheet_Change 事件子程序中。
这比条件格式稍微灵活一些,因为您可以在选择格式的列的每一行上使用不同的格式。(例如,参见屏幕截图中的 H 列)。
这是运行宏之前工作表的屏幕截图...
这是运行宏后的屏幕截图...
这是 VBA 代码...
Sub FormatTransfer()
Dim mySht As Worksheet
Dim myInRng As Range, myOutRng As Range, myFmtRng As Range
Dim myCell As Range
Set mySht = Worksheets("Sheet3")
Set myInRng = mySht.Range("E1", mySht.Range("E" & mySht.Rows.Count).End(xlUp))
Set myOutRng = myInRng.Offset(0, 2)
Set myFmtRng = mySht.Range(myInRng.Offset(0, 3), myInRng.Offset(0, 7))
For Each myCell In myInRng
If myCell.Value < 20# Then
myFmtRng(myCell.Row, 1).Copy
myOutRng(myCell.Row, 1).PasteSpecial xlPasteFormats
End If
If myCell.Value >= 20# And myCell.Value < 40# Then
myFmtRng(myCell.Row, 1).Copy
myOutRng(myCell.Row, 1).PasteSpecial xlPasteFormats
End If
If myCell.Value >= 40# And myCell.Value < 60# Then
myFmtRng(myCell.Row, 2).Copy
myOutRng(myCell.Row, 1).PasteSpecial xlPasteFormats
End If
If myCell.Value >= 60# And myCell.Value < 80# Then
myFmtRng(myCell.Row, 3).Copy
myOutRng(myCell.Row, 1).PasteSpecial xlPasteFormats
End If
If myCell.Value >= 80# And myCell.Value <= 100# Then
myFmtRng(myCell.Row, 4).Copy
myOutRng(myCell.Row, 1).PasteSpecial xlPasteFormats
End If
Next myCell
End Sub