(VBA EXCEL)仅用四个空格替换0

时间:2015-06-15 18:56:18

标签: vba excel-vba replace null isnullorempty

这是一个奇怪的具体问题。假设我有一个产生值为0的单元格。我正在将其写入文本文件。

当我写它而不是0时,我希望有四个空格(它实际上是一个null的可视占位符)。

这一行的问题:

cellValue = Replace(cellValue, 0, "    ")

这往往会用四个空格替换全零。有没有人知道如何解决这个问题?我将不胜感激任何帮助。

示例输入:

0 | 100 | 48

示例输出:

____10048 (Underscores are spaces).

到目前为止我所拥有的:

Dim myFile As String, rng As Range, cellValue As Variant, I As Integer, j As Integer

myFile = Application.DefaultFilePath & "\test_data_output.txt"
Set rng = Selection
Open myFile For Output As #1                                    

For I = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
cellValue = Replace(cellValue, 0, "    ")
cellValue = cellValue + CStr(rng.Cells(I, j).Value)
If j = rng.Columns.Count Then
    Print #1, cellValue
End If

    Next j
    cellValue = ""
Next I

Close #1

--------------------------------- UPDATE ------------- -------------------------

所以我们决定做一个excel表,如果isBLANK条件显示4个空格,如果它是假的。那应该适用于现在。谢谢你的帮助。它基本上是一组空白的细胞,被带到一张新的床单上。因此,由于某种原因,它总是显示0表示其空白。我们决定,否则最好。

Excel代码:

=IF(ISBLANK('OurSheetName'!I7),"    ",'OurSheetName'!I8)

2 个答案:

答案 0 :(得分:2)

您的代码有几个问题: -

  1. 您已将yourdict = dict() with open(file) as f: filedata = f.read().splitlines() for line in filedata: linedata = line.split() if linedata[0] not in yourdict: yourdict[linedata[0]] = [] yourdict[linedata[0]].append(int(linedata[3])) yourdict[linedata[0]].append(int(linedata[4])) for key in yourdict: yourdict[key] = [min(yourdict[key]), max(yourdict[key])] 定义为cellValue,原因并非明显。最好使用最能代表数据的数据类型声明变量。您可以简单地将其声明为Variant,除非您有充分的理由将其保留为昂贵的String
  2. 我无法看到您为Variant分配值的位置。这是完整的代码还是您编辑过来发布?如果代码在没有正确评论的情况下被发布,就很难对其进行评估,以解释删除的内容。
  3. 您可以在编写之前测试该值: -

    cellValue

答案 1 :(得分:1)

在进行更换之前,只需检查单元格值是否为0。

For I = 1 To rng.Rows.Count
  For j = 1 To rng.Columns.Count
    If cellValue = 0 Then
       cellValue = Replace(cellValue, 0, "    ")
    End If
    If j = rng.Columns.Count Then
       Print #1, cellValue
    End If
  Next j
  cellValue = ""
Next I