我有一個Selection
它可以是任何隨機範圍,例如("A1:O10")
如何將選中的所有空單元格轉換爲NULL值?
我需要確保此範圍內所有空白的單元格的值爲NULL
。
我該怎麼做?
For Each c In Selection.Cells
If Abs(c.Value) = "" Then c.Value = "NULL"
Next
我有一個Selection
它可以是任何隨機範圍,例如("A1:O10")
如何將選中的所有空單元格轉換爲NULL值?
我需要確保此範圍內所有空白的單元格的值爲NULL
。
我該怎麼做?
For Each c In Selection.Cells
If Abs(c.Value) = "" Then c.Value = "NULL"
Next
這應該做的伎倆
Sub BlankToNull()
For Each cell In Selection
If Not IsError(cell.Value) Then
If cell.Value = vbNullString Then cell.Value = "NULL"
End If
Next cell
End Sub
當選擇中的任何單元格包含錯誤(如#N/A或#DIV/0!)時,它將觸發Type mismath錯誤。你應該加上檢查:'如果不是IsError(單元格),那麼...' –
如果你使用isempty(cell) – CRondao
@simoco,就不需要這個好點。我已經更新了代碼,將其考慮在內。 –
編輯:被提議作爲一個答案,但在這裏把這個作爲不如何做到這一點(基於simoco的有關SpecialCells和UsedRange觀察)
On Error Resume Next
Selection.SpecialCells(xlCellTypeBlanks).Value = "NULL"
On Error Goto 0
修正了SpecialCells「otchas:
個假設一個單一區域選擇:
With Selection
With .Cells(.Cells.Count)
If Not .HasFormula And Len(.Value) = 0 Then
.Value = "NULL"
End If
End With
If .Cells.Count = 1 Then Exit Sub
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).Value = "NULL"
On Error GoTo 0
End With
從亞洲時報Siddharth潰敗:另一種方式,不使用循環
Sub Sample()
With ActiveSheet
'~~> How like is that the bottom right cell is filled????
'~~> Excel 2007+ - XFD1048576
'~~> Excel 2003 - IV65536
.Cells(.Rows.Count, .Columns.Count) = "A"
If Selection.Cells.Count < 2 Then
If Selection.Value = "" Then Selection.Value = "NULL"
Else
On Error Resume Next
Selection.SpecialCells(xlCellTypeBlanks).Value = "NULL"
On Error GoTo 0
End If
.Cells(.Rows.Count, .Columns.Count).ClearContents
End With
End Sub
蒂姆,我已經測試了這種方法,不幸的是它只適用於來自UsedRange的單元格。嘗試選擇「A10000:B10000」(範圍在UsedRange之外)並評估宏。它什麼都不會做 –
@simoco - 這非常有趣!感謝您指出...... –
@SiddharthRout - 沒有問題 - 繼續前進 –
ABS(c.value)?你的意思是TRIM(c.value)或isempty(c.value)是否正確? – CRondao