Excel值函数需要一个真正的VBA等价物

正如标题中提到的,我需要一个相当于Excel值函数的VBA。 我的数据集如下所示: 数据集示例

我正在寻找的VBA代码相当于这个: =Value(A2)+Value(B2) 。 这将在C列

输出必须与该function相同。 对于给定的例子,列C应该看起来像这样: 最终产品

除此之外,它只需要在macros运行之后在单元格中具有值,而不是显示值并且仍然具有该公式。

这是我迄今为止所做的:

 For i = 1 To LastRow strValue = Val(sht.Range("A" & i)) strValue1 = Val(sht.Range("B" & i)) sht.Range("C" & i).Value = strValue + strValue1 Next i 

我也试过这个变化,其中几个如下所示:

 For i = 1 To LastRow strValue = Evaluate(sht.Range("A" & i)) strValue1 = Evaluate(sht.Range("B" & i)) sht.Range("C" & i).Value = strValue + strValue1 Next i For i = 1 To LastRow strValue = sht.Range("A" & i) strValue1 = sht.Range("B" & i) strVal = Evaluate(strValue) strVal1 = Evaluate(strValue1) sht.Range("C" & i).Value = strVal + strVal1 Next i 

我找不到任何适合我的东西。 C语言中的输出结果只是9.很确定它是A中的第一个数字,并将它添加到B中的第一个数字。所以当B中的小时变为1时,显示10。

我也试过简单的:

 For i=1 To LastRow sht.Range("C" & i).Value = sht.Range("A" & i).Value + sht.Range("B" & i).Value Next i 

这只是将文本连接到格式9/03/15 00:00:00

任何和所有帮助表示赞赏。 如果您可以指出正确的方向,将最终的C值从该数字(即42250.00017)更改为自定义date/时间格式'yyyy-mm-dd hh:mm:ss' ,则可获得奖励。

编辑:这是我的代码达到了坚持。 其他的一切都按我想要的那样工作,唯一的问题是最后一个For循环。

 Sub sbOrganizeData() Dim i As Long Dim k As Long Dim sht As Worksheet Dim LastRow As Long Dim sFound As String Dim rng As Range Dim sheet As Worksheet Dim Sheet2 As Worksheet Dim strFile As String Dim strCSV As String Dim strValue As Double Dim strValue1 As Double Dim strVal As Long Dim strVal1 As Long Application.DisplayAlerts = False Sheets("all016").Delete Sheets("Sheet1").Delete Application.DisplayAlerts = True Set sheet = Sheets.Add Set Sheet2 = Sheets.Add sheet.Name = "all016" Sheet2.Name = "Sheet1" strFile = ActiveWorkbook.Path strCSV = "*.csv" sFound = Dir(strFile & "\*.csv") If sFound <> "" Then Workbooks.Open Filename:=strFile & "\" & sFound End If Range("A1").CurrentRegion.Copy Destination:=Workbooks("solar.xlsm").Sheets("all016").Range("A1") Workbooks(sFound).Close Set sht = ThisWorkbook.Sheets("all016") LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row sht.Range("C1").EntireColumn.Insert For i = 1 To LastRow 'Code that doesn't quite work here' sht.Range("C" & i).NumberFormat = "yyyy-mm-dd hh:mm:ss" Next i 

问题是date和时间是string,所以这样的事情会工作:

 For i = 2 To LastRow strValue = Evaluate("VALUE(TRIM(" & sht.Range("A" & i).Address(1,1,,1) & "))") strValue1 = Evaluate("VALUE(TRIM(" & sht.Range("B" & i).Address(1,1,,1) & "))") sht.Range("C" & i).Value = strValue + strValue1 'the format sht.Range("C" & i).NumberFormat = "mm/dd/yy hh:mm:ss" Next i 

您必须引用range元素的.Value2字段为:

 For i = 1 To LastRow sht.Range("C" & i).Value2 = sht.Range("A" & i).Value2 + sht.Range("B" & i).Value2 Next i 

该值是免费的格式,只是在Excel的时间/date代码,因为你希望你的最终结果。 干杯,