- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从一个 Excel 文件读取数据并将数据写入另一个 Excel 文件。
我的问题是源的日期格式为 dd.mm.yyyy
,目标的格式必须为 dd-mm-yyyy
。
所以我搜索了所以找到了这个答案 Replacing one character with another in a string这表明我可以使用替代
。
所以我尝试了这段代码:
For r = 1 To 10
myOutputSheet.Cells(6+r, 1).Value = myInputSheet.Cells(r, 1).Value 'Date
myOutputSheet.Cells(6+r, 1).Value = substitute(myOutputSheet.Cells(6+r, 1), ".", "-")
Next
它给出了错误:
Microsoft VBScript runtime error: Type mismatch: 'substitute'
如何正确地将 .
更改为 -
?
Update
我也尝试过:
For r = 1 To 10
myOutputSheet.Cells(6+r, 1).Value = myInputSheet.Cells(r, 1).Value 'Date
replace(myOutputSheet.Cells(6+r, 1), 2, 1, "-")
replace(myOutputSheet.Cells(6+r, 1), 4, 1, "-")
Next
但这给出了错误:
Microsoft VBScript compilation error: Cannot use parentheses when calling a Sub
因此我尝试:
For r = 1 To 10
myOutputSheet.Cells(6+r, 1).Value = myInputSheet.Cells(r, 1).Value 'Date
replace myOutputSheet.Cells(6+r, 1), 2, 1, "-"
replace myOutputSheet.Cells(6+r, 1), 4, 1, "-"
Next
但这给出了错误:
Microsoft VBScript runtime error: Type mismatch: '[string: "-"]'
最佳答案
首先,您应该知道 Excel 中的所有日期和时间都存储为数字,并且仅显示为日期。
因此,如果这样显示,数字 42,000 可能是一个日期。这是 1899 年 12 月 31 日之后的第 42,000 天。即 2014 年 12 月 27 日。
这就是事情变得复杂的地方:日期在 Excel 中不是存储为数字而是文本。那么对于 Excel 用户来说,单元格中可能会出现日期,而实际上(为了 Excel 的理解)只有文本。虽然用户不可能仅通过查看单元格来区分两者之间的区别,但真正的区别在于您无法对纯文本日期执行日期操作。
悲伤的一切让我们看两个小例子:
(1) 在单元格中输入以下内容:11.12.2013
。 Excel 很可能会将其识别为日期并将其转换为数字 41,619。然而,你会看到一个日期。这是因为 Excel 自动将该单元格的格式从常规
更改为日期
。但是,如果您将该单元格的格式更改为常规
,那么您将看到上述数字。
(2) 现在,在单元格中输入以下内容:2015-14-11
。同样,Excel 很可能不会将其识别为日期,而是将其存储为纯文本。当您查看该单元格的数字格式时,您可能仍然会看到 General
,如果您将其显式更改为 Number
,您仍然会看到 2015- 14-11
.
现在您可能可以更好地理解上面 @vacip 的评论了。他/她试图查明您的源文件中是否确实有日期(存储为数字),或者该文件中是否只有文本,这可能表明它包含日期。
如果 Excel 能够识别源文件中的这些日期,那么只需更改单元格的 .NumberFormat
即可轻松更改其格式。本质上,您可能需要查看源文件并检查是否可以将这些日期显示为数字(1899 年 12 月 31 日之后的天数)。
如果是这种情况,那么您应该能够将数字格式更改为 dd-mm-yyyy
并且一切都已准备就绪。然而,如果您想在目标文件中存储文本或想在其中保存日期,这一点又很重要。如果您想在那里存储日期并且将它们作为源文件中的日期,那么我建议如下:
myOutputSheet.Cells(6+r, 2).Value2 = myInputSheet.Cells(6+r, 2).Value2
myOutputSheet.Cells(6+r, 2).NumberFormat = "dd-mm-yyyy"
但是,如果您坚持将 13.11.2013
传输到目标文件中,那么您将需要使用以下内容(在源文件中实际识别日期的情况下):
myOutputSheet.Cells(6+r, 2).Value2 = Format(myInputSheet.Cells(6+r, 2).Value2, "dd-mm-yyyy")
当源文件中有文本时,情况可能会变得有点复杂。如果您不介意它保留文本并且您真的只想将 .
更改为 -
那么您可以使用 Replace
作为在上面的评论中建议:
myOutputSheet.Cells(6+r, 2).Value = Replace(myInputSheet.Cells(6+r, 2).Value, ".", "-")
但是,如果源文件中有文本并且想要在目标文件中保存日期,那么您可以要求 Excel 尝试使用 CDate
进行转换,并预先检查单元格的内容是否可能通过 IsDate
被识别为日期:
myOutputSheet.Cells(6+r, 2).Value2 = Iif(IsDate(myInputSheet.Cells(6+r, 2).Value, CDate(myInputSheet.Cells(6+r, 2).Value), "no recognizable date")
您现在可能已经意识到,我在上面的代码片段中有时使用了 .Value
,有时使用了 .Value2
。有关这方面的更多信息,您可能需要阅读以下内容:What is the difference between .text, .value, and .value2?
顺便说一句:时间也以数字形式存储。事实上,它们被保存为一天的一小部分。因此,数字 0.5 相当于半天,即中午 12:00。同时,早上 09:00 为 0.375,18:00 或下午 6 点相当于 0.75。
关于excel - 使用替换或替换更改日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100821/
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!