我有一个VBA脚本,它从类似于这个页面的页面中提取数据:
http://www.basketball-reference.com/friv/dailyleaders.cgi?month=12&day=30&year=2013
问题在于它贴上" MP"字段进入Excel,它以一种奇怪的格式出现。例如,第一行以39:42显示Kevin Love,但在Excel中显示为15:42,当我点击它时,该值实际显示为1/1/1900 3:42:00 PM
我尝试更改导入的列的格式并重新导入,但它会得到相同的结果。
理想情况下,我希望它以39.66(39分40秒)的速度进入,但如果它只是以冒号的形式出现,我可以让它发挥作用。
非常感谢任何帮助!
编辑:这是我当前的代码,如果它有帮助:
Sub DailyImport()
'
' DailyImport Macro
'
'
Dim day As Integer
Dim month As Integer
Dim year As Integer
Dim indexD As Integer
Dim indexM As Integer
Dim indexY As Integer
day = 1
month = 10
year = 2013
NextRow = 1
For indexY = year To 2014
For indexM = month To 12
For indexD = day To 31
Range("A" & NextRow).Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.basketball-reference.com/friv/dailyleaders.cgi?month=" & month & "&day=" & day & "&year=" & year & "" _
, Destination:=Range("$A" & NextRow))
.Name = "dailyleaders.cgi?month=" & month & "&day=" & day & "&year=" & year & "_1"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebFormatting = xlWebFormattingNone
.WebSelectionType = xlAllTables
.WebPreFormattedTextToColumns = False
.WebConsecutiveDelimitersAsOne = False
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
day = day + 1
FirstRow = NextRow
NextRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("AD" & FirstRow + 1, "AD" & NextRow) = month & "/" & day - 1 & "/" & year
Next indexD
month = month + 1
day = 1
Next indexM
year = year + 1
month = 1
day = 1
Next indexY
End Sub
答案 0 :(得分:0)
Range.Formula = "=TIMEVALUE(""00:" & TimeValue & """)"
这会将时间保留为可用于计算的值。
答案 1 :(得分:0)
Excel以不幸的方式处理时间值。 “:”分开的数字是HH:MM [:ss],即使你更喜欢MM:SS。并且,导入后更改列的格式为时已晚。 因此,“39:42”被解释为24小时加上15小时:42分钟,这反过来被解释为下午3:42:00。 这就是你所看到的。
解决方案:
如果您可以控制CSV导出,也许可以将MP字段导出为'39:42(请注意开头撇号),这会导致Excel将其解释为字符串,稍后您可以使用该字符串进行解析相关的功能。到目前为止,这是最简单的解决方案,因为每个人都会受益。
如果保存CSV文件,则可以在Excel打开/导入期间控制列格式,将其更改为文本。点击数据标签>从文本按钮导入,然后遍历导入。
如果您无法控制导出,作为测试,我使用emacs替换([0-9] [0-9] :)和'\&amp ;.现在,我有'39:42。 (如果你不明白,请查看“正则表达式”。)当然,你可以使用像Perl这样的东西来编写变更脚本,如果这是常规的话。无论如何,改变你的表,并正常加载csv文件。