另存为.csv正确的小数点分隔符

我正在编写一个“主”Excel文档,创build新的工作簿并使用Visual Basic for Applications将它们保存为“.csv”。 创build的工作簿包含来自两个来源的测量数据。 一个来源已经在我的区域设置中提供了测量date(荷兰,其中逗号,标记通常用作小数点分隔符)。 然而,另一个来源提供一个点的数据. 作为分隔符(美式设置)。 我想要replace所有点号来表示逗号。

这可能与replacefunction?

(我想这个解决scheme只会在数值大于1.000,00(或者美国设置为1,000.00)时才会失败,这是可以接受的,但是还不够完美。

尝试到目前为止

  • Application.DecimalSeperator = ","
  • 在保存工作簿的行后面添加local = true

此外

Excel认为文本文档中的值有1000个分隔符31.435。 当我打开1000分隔符的值是31435.我需要它是31,435(十进制分隔逗号,符号)

我需要修改单元格格式吗?
如果是的话,那么…怎么样?
任何其他选项来解决这个问题?

Anwser / Sollution (最适合我)

 Sheets(SheetNaamCNC).Range("B1").Select Do While ActiveCell.Value <> "" If InStr(ActiveCell.Value, "0,") = 0 Then ActiveCell.Value = ActiveCell.Value / 1000 End If ActiveCell.Offset(1, 0).Select Loop 

如果它是以文本的forms阅读,你可以试试

 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(sheet1!A2,",","|"),".",","),"|",".") 

如果我这样做,我会input这个公式在我想重新格式化的每一列的新工作表的同一列,只是复制任何其他列使用

 =sheet1!B2 etc. 

这取决于你有多less列,这是否是一个可行的解决scheme。

你可以使用下面的函数

 Sub sub1() Application.DecimalSeparator = "." Application.ThousandsSeparator = "," Application.UseSystemSeparators = False Plan1.Columns(1).NumberFormat = "#,##0.00" End Sub 

使用“ 数据”选项卡>“ 获取外部数据” >“ 从文本”中读取Excel表格中的文本文件时,可以通过单击文本文件导入向导的步骤3中的“ Advancedbutton来指定小数点和千位分隔符。

在这里输入图像说明

如果您在导入某个数据文件时录制macros,则会得到如下所示的结果:

 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;myfilename.csv" _ , Destination:=Range("$A$1")) .Name = "myfilename" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1) .TextFileDecimalSeparator = "," .TextFileThousandsSeparator = " " .Refresh BackgroundQuery:=False End With 

然后您可以使用logging的代码来开发自己的macros,以正确的格式导入将来的数据文件 – 特别参见TextFileDecimalSeparatorTextFileThousandsSeparator属性。

已经被设置为分隔符。 这适用于值为0,234的值,但像31,345的值将失败。 它们显示为31.345(在这种情况下为千位分隔符)。 可能的溶剂循环通过细胞一个接一个。 如果第一个字符不等于“0”,那么将ActiveCell.Value除以1000.绕道的种类…但我想它会为我工作。

添加以下内容,

 Sheets("YourSheetName").Range("TopOfRangeYouLikeToEdit").Select Do While ActiveCell.Value <> "" If Left(ActiveCell.Value, 1) <> "0" Then ActiveCell.Value = ActiveCell.Value / 1000 End if ActiveCell.Offset(1,0).Select Loop 

– 由Cornelis编辑:而不是Left(ActiveCell.Value,1)<> "0"

 If ActiveCell.Value < 0 Then 

会更好