我想写一个宏,如果列先前有一个特定的let,将格式化单元格。 例如,假设有公司ABC,DEF,GHI JKL等 B列用于公司ABC和GHI的任何地方,然后将C列中的格式更改为“000000-00-0000” B列用于其他公司的任何地方,然后将C列中的格式更改为“000000-00-00”
Sub FixFormat()
If Range("B") = ABC Then .NumberFormat B+1 ="000000-00-00"
If Range("B") = GHI Then .NumberFormat B+1 ="000000-00-00"
If Range("B") = DEF Then .NumberFormat B+1 ="000000-00-0000"
If Range("B") = JKL Then .NumberFormat B+1 ="000000-00-0000"
End Sub
我知道这不起作用,我不是最好的,所以任何帮助都会非常感激。
答案 0 :(得分:2)
假设您拥有来自C1单元格的值,您可以尝试以下代码作为工作表模块
Sub chgFmt()
For Each rCell In Range("C1:C" & Range("C1").End(xlDown).Row)
Select Case rCell.Offset(0, -1).Value
Case "ABC", "DEF"
rCell.NumberFormat = "000000-00-00"
Case Else
rCell.NumberFormat = "000000-00-0000"
End Select
Next
End Sub
答案 1 :(得分:1)
尝试这样的事情?
Sub NumFormat()
Dim i as integer
For i = 1 to 100
Select Case Sheet1.Cells(1,i)
Case "ABC" Or "GHI"
Sheet1.Cells(1,i+1).EntireColumn.NumberFormat = "######-##-##"
Case "DEF" Or "JKL"
Sheet1.Cells(1,i+1).EntireColumn.NumberFormat - "######-##-####"
End Select
Next
End Sub
我在没有Excel的计算机上这样做,所以我无法调试,但请告诉我这是否是您正在寻找的东西!也:
http://msdn.microsoft.com/en-us/library/office/ff196401%28v=office.15%29.aspx
答案 2 :(得分:1)
选择案例似乎确实是解决您的问题的更实用方法。另一种方法是直接在Excel中制定规则,您可以说如果某个单元格包含此规则,则将发生某些情况。