我在excel中有一张表,最终将要读入sql数据库。我有\“ @ \”作为自定义代码,用引号将文本包装起来。但是,我也尝试将所有空白值都替换为NULL,但这些空白值也将引号引起来。
是否可以使用自定义代码将文本中除NULL以外的所有字符串包装起来?
答案 0 :(得分:1)
经过大量研究(1,2,3,4,5),发现自己对定制的功能印象深刻数字格式实际上具有数字格式,在我看来数字格式无法满足您的需求。
它无法将单元格的实际值与给定值(如"NULL"
)进行比较;它只能用于区分存储在单元格中的类型类型的值,无论它是以下值之一:POSITIVE; NEGATIVE; ZERO; TEXT
。
考虑到这一点,您可以使用VBA解决方案轻松完成此操作。由于我在猜测您的情况,因此这里有一些选择。
第一个选项不会自动更改单元格的数字格式,但是如果您不介意“手动”更新数字格式,则可以在下面运行此宏以强制其更新数字格式。
Option Explicit
Sub NumberFormatting()
Dim rng As Range
Set rng = Range("A1:B4") 'adjust range as necessary
Dim cel As Range
For Each cel In rng.Cells
If cel.Value2 = "NULL" Then
cel.NumberFormat = "@"
Else
cel.NumberFormat = "\""@\"""
End If
Next cel
End Sub
如果您希望数字格式自动更改,则可以将此代码放到工作表的模块中,并且每次在指定范围内更新单元格时,都会检查新值是否为"NULL"
并更新数字在这种情况下格式化。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("A1:B4") 'adjust range as necessary
If Not Intersect(Target, rng) Is Nothing Then
If Target.Value2 = "NULL" Then
Target.NumberFormat = "@"
Else
Target.NumberFormat = "\""@\"""
End If
End If
End Sub