使用VBA将数据导出为两倍

时间:2018-12-05 09:13:09

标签: excel vba

我想将所选数据从Excel工作表导出到简单的txt文件。 必须将A列导出为INT,将B列导出为String,将C列导出为INT,将D列导出为String,将E列导出为Double(导出时必须将数据另存为double格式-35.50、30.00、0.00) 您可以查看附件图片以获取更多信息。 列A.B,C,D很好,但是我不能强制将列E的值提取为两倍(在excel中,此列看起来很好-例如35.00,但是提取到txt文件时为35) 这是我的VBA脚本:

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Option Explicit

Private Sub CommandButton1_Click()  
    Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer

    myFile = Application.DefaultFilePath & "\rezultat.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 = rng.Cells(i, j).Value

            If j = rng.Columns.Count Then
                Write #1, cellValue
            Else
                Write #1, cellValue,
            End If
        Next j
    Next i

    Close #1 
End Sub

这就是我的txt文件的结果:

1,"1144641",1,"NAME-STRING VALUE",350.5

一切都很好,除了最后一个值:必须为350.50 您可以查看附件中的屏幕截图

screenshot

1 个答案:

答案 0 :(得分:0)

将值格式化为将其写入文件时显示2个小数位

    If j = rng.Columns.Count Then
        Write #1, Format(cellValue, "#.00")
        'or Format(cellValue, "Standard")
    Else
        Write #1, cellValue,
    End If

这是因为默认情况下,仅写入单元格的值/内容,而不写入单元格格式。


如果您希望避免将值写成带引号的字符串,则可以构造单个字符串以为每一行写,而不是迭代行和列。例如,

cellValues = rng.Cells(i, 1).Value & ",""" & rng.Cells(i, 2).Value & """," _ 
    & ... & Format(rng.Cells(i, 5), "#.00")

要加引号,必须加双引号。