如果单元格值不为空而不是0.我试图添加0.00我正在尝试但不工作的代码:
For x = 1 To ActiveWorkbook.Sheets.Count Step 1
With ActiveWorkbook.Worksheets(x).Range("A1:Z30")
Set FinColumn = .Find(What:="price", AFter:=.Cells(1, 1), LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If FinColumn Is Nothing Then
Else
I = FinColumn.Row + 1
c = FinColumn.Column
**problem with below Do loop,no clues how to do**
**Do Until .Cells(I, c).Value <> "" And .Cells(I, c).Value <> 0
.Cells(I, c).NumberFormat = "0.00"
I = I + 1
Loop**
End If
End With
Next x
请提供符合以下条件的代码: 我希望代码在2007年的早期版本中都能使用,并且必须符合以下条件:
如果excel中的数据如下所示:
Emp Name Emp id Empsal
Jhon 1
steve 2 2
mike 3 3.5
paul 4 0
gabriel 5 0.00
bush 6 null
如果我运行宏,数据应该在Empsal列中转换为以下格式:
Emp Name Emp id Empsal
Jhon 1 0
steve 2 2
mike 3 3.50
paul 4 0
gabriel 5 0.00
bush 6 0
谢谢,
Chaitu
答案 0 :(得分:4)
我建议不使用VBA使用自定义数字格式,例如:
[=0]0;0.00
或者如果你也想要很好的大数字:
[=0]0;[>=1000]# ### ###;0.00
答案 1 :(得分:1)
经过测试和测试(最快的方法)
此代码使用条件格式。唯一的缺点是此代码将在Excel 2007之后起作用:P因此,如果您使用的是Excel 2003,那么这将无效。
Option Explicit
Sub Sample()
Dim x As Long
Dim FinColumn As Range
For x = 1 To ActiveWorkbook.Sheets.Count
With ActiveWorkbook.Worksheets(x).Range("A1:Z30")
Set FinColumn = .Find(What:="price", AFter:=.Cells(1, 1), _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not FinColumn Is Nothing Then
With Worksheets(x).Columns(FinColumn.Column)
.NumberFormat = "General"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=0"
.FormatConditions(1).NumberFormat = "0.00"
.FormatConditions(1).StopIfTrue = True
End With
End If
End With
Next x
End Sub
答案 2 :(得分:0)
我认为你的意思是你希望"0.00"
作为数值输入,但格式化为“0.00”?在这种情况下......
.Cells(I, c).Value = 0
.Cells(I, c).NumberFormat = "0.00"
答案 3 :(得分:0)
你的循环:
Do Until .Cells(I, c).Value <> "" And .Cells(I, c).Value <> 0
.Cells(I, c).Value = "0.00"
I = I + 1
Loop
循环,直到找到非null /非零值,并在此无条件地将每个空单元格设置为0:
.Cells(I, c).Value = "0.00"
(使用新工作表上的常规格式化,此值将显示为0,而不是0.00,除非您要么重新使用工作表或更改了默认格式。)
如果您只想设置非空值,则需要更改循环的限制条件与辅助非null / null单元格测试不冲突。 在该循环内(即搜索非null),独立执行某些操作以检查每个单元格是否为空。 (比如if / then / else设置其值)。
答案 4 :(得分:0)
好的,我想我现在知道你的意思了。问题是您输入了一个不可能的Do Until
语句,因为您的单元格值永远不会同时为空AND
0,因此您可能会获得无限循环
下面,我只是将您的AND
替换为OR
Do Until .Cells(I, c).Value <> "" Or .Cells(I, c).Value <> 0
.Cells(I, c).Value = "0.00"
I = I + 1
Loop
或者,如果仍然没有覆盖它,请尝试使用<> Empty
,因为Empty
将涵盖0和“”
Do Until .Cells(I, c).Value <> Empty
.Cells(I, c).Value = "0.00"
I = I + 1
Loop