Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA格式不正确_Vba_Excel - Fatal编程技术网

Excel VBA格式不正确

Excel VBA格式不正确,vba,excel,Vba,Excel,因此,我尝试将日期格式化为yyyymm(例如,201808)。然而,结果总是(20188)。对于12月份等月份为两位数的月份,没有问题。结果将是201812年。然而,对于个位数,这种情况在几个月内不会发生。在我的代码中,月份和年份最初位于两个单独的列中,但我将它们合并在一起。这是我的密码: Sheets("Sheet1").Select Columns("G:G").Select Selection.NumberFormat = "00" Columns("I:I").Select Select

因此,我尝试将日期格式化为yyyymm(例如,201808)。然而,结果总是(20188)。对于12月份等月份为两位数的月份,没有问题。结果将是201812年。然而,对于个位数,这种情况在几个月内不会发生。在我的代码中,月份和年份最初位于两个单独的列中,但我将它们合并在一起。这是我的密码:

Sheets("Sheet1").Select
Columns("G:G").Select
Selection.NumberFormat = "00"
Columns("I:I").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1],RC[-2])"
Selection.AutoFill Destination:=Range("I2:I800")
Range("I2:I800").Select
Columns("I:I").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Columns("G:H").Select
Selection.Delete Shift:=xlToLeft
可能有更简单的方法来编写此代码,因为我刚刚录制了宏。

数字格式实际数字

您需要使用
TEXT()
来实际更改存储值:

With Worksheets("Sheet1").Range("I2:I800")
    .FormulaR1C1 = "=RC[-1] & TEXT(RC[-2],""00"")"
    .Value = .Value
End With
Worksheets("Sheet1").Columns("G:H").Delete

连接时,使用
TEXT
函数“重新应用”格式。@rawrplus-Hmm,不幸的是,我无法将其放入该格式,因为它不能以这种方式解释给其他系统。它必须是“yyyymm”。我可以做“yyy.mm”然后删除句点吗?@BigBen,是的,但这根本不是op在这里做的。字符串连接不使用单元格的数字格式。如果要导出为TXT或CSV,yyyymm的单元格日期格式不产生正确的结果吗?@Jeeped-我的观点完全正确。OP希望它能。。。