【发布时间】:2011-11-18 13:07:17
【问题描述】:
这是我在这里的第一个问题,所以我希望一切都是正确的。我已经破解了一些代码来从 excel 中读取并为每个单元格输出带有语音标记的 CSV,无论是否为空白。问题在于excel在将其写入CSV时将YYYY-MM-DD日期转换为MM-DD-YYYY的日期。为了解决这个问题,我编写了以下 if 语句:
If IsDate(Cells(r, c)) Then
不幸的是,程序现在也将带有“2A”的单元格解释为日期(即使我已经检查了 excel 中的格式是文本),并将其导出为“1899-12-30”。我已经输入了一个非常快速而肮脏的子句来过滤这个
If Selection.Cells(r, c) = "2A" Then
但我想知道是否有更优雅的方法来转换仅 YYYY-MM-DD 或类似格式的日期格式。为什么它认为A2是约会!?完整代码如下:
For r = 1 To Selection.Rows.Count
s = """"
c = 1
For c = 1 To Selection.Columns.Count
If IsDate(Selection.Cells(r, c)) Then
'ridiculous clause to get rid of A2 being treated as a date
If Selection.Cells(r, c) = "2A" Then
s = s & Selection.Cells(r, c)
Else
s = s & Format(Selection.Cells(r, c), "YYYY-MM-DD")
End If
Else
s = s & Selection.Cells(r, c)
End If
If c = Selection.Columns.Count Then
s = s & """" 'end of row
Else
s = s & """,""" 'mid row
End If
Next c
a.writeline s
Next r
【问题讨论】:
-
您的意思是
A2(在问题文本中)还是2A(在您的代码中)?此外,您需要使用Selection.(例如IsDate(Selection.Cells(r,c))限定所有您的单元格引用。按照编码,如果您的选择从单元格A1 开始,它只会按预期工作。 -
很好的反馈,更正,谢谢