我正在使用 iSeries 平台。我有一些程序可以为我需要的数据创建 CSV,还有一个 RPG 程序,它将运行 Java 程序来获取 CSV 数据并将其插入 .xls 模板以创建新的 Excel 电子表格(而不是 .xlsx)。我遇到的问题是 CSV 中的数据值放在引号中并以文本形式插入到 XLS 电子表格中,这在完成所有操作后会给我的日期单元格带来问题。我得到了“小绿色三角形”,因为 Excel 将它们视为输入到日期单元格中的文本。
我知道我可以使用 DateValue() 函数,而且它效果很好,但要求是我们删除包含文本数据的原始列,这样我就失去了对 DateValue() 函数的引用。我正在寻找(并且仍在寻找)一种方法,在文本/字符串日期值进入单元格时将其加载到 DateValue() 函数中,而无需引用另一个单元格,或者一种方法,在补充列中的单元格中永久捕获该值,以便可以删除原始文本列。原始文本列看起来像“06/08/21”,已更新为“06/08/2021”,以消除 Excel 中的“两位数年份”投诉。我的主管并不反对使用 =DateValue() 解决方案,但这需要对原始单元格的引用(除非有解决方法),如果我们朝这个方向发展,她希望删除原始单元格。
我将非常感激任何帮助或指导。包括我如何更好地提出这个问题。
编辑:显然我没有清楚地传达问题。“客户”要求来自数据库的值在 5 列中正确格式化。在从数据库文件到 CSV 执行 CL CPYTOIMPF 时,“纯 CSV”无法正确格式化美元金额。如果有其他方法可以将数据从 iSeries 数据库导入 CSV 或 XLS 文件,我愿意阅读帖子和文章来解决这个问题。
答案1
您应该能够搜索并替换引号,然后将单元格重新格式化为日期。您可以将其录制为宏,并在工具栏中将按钮链接到它,或者将其作为导入的一部分运行。
例如:
Sub Datestring()
' Datestring Macro
' Removes quote marks and reformats as date
With Selection
.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
.NumberFormat = "[$-x-sysdate]dddd, mmmm dd, yyyy"
.EntireColumn.AutoFit
End With
End Sub
只需突出显示要转换的列并运行宏,或者每次手动执行即可。