我没有vba的高级经验,所以请放轻松我:)
我的工作表特定列中的每个单元格都可以包含19/12/15, 22/12/15
形式的日期;这可以是例如C10
的值(仅举这一点,我要求用户以一种或另一种形式在任何这些单元格中输入日期,但我找到了上述明确的方法,在加工和清晰度方面,最方便)。
下面我给出了细胞样子的样本:
enter image description here
这里的任务只是读取单元格的值,区分可以是两个或更多的日期,并返回一个平均日期。在奇数差异的情况下,它应该使日期更接近下限。
我尝试了各种预先构建的vba日期函数,只是为了分隔和分割日期,但没有一个有效。此外,每当我将单元格的值作为参数传递时,我都使用split
函数返回0
。
你有什么建议吗?
谢谢!
编辑:我已经能够提出以下功能,该功能可以在日期以标准格式插入单元格的情况下完成工作,例如: ##/##/##, ##/##/##
,以及单元格中插入的日期不超过两个。如果有人找到更好的方法,请随时提供。
Function MeanDate(cell As Range) As Date
Dim InvoiceDate As String
Dim FirstInvoiceDate As String
Dim SecondInvoiceDate As String
Dim meanInvDate As String
Dim DaysOfDiff As Long
InvoiceDate = cell.Value
If Len(InvoiceDate) = 8 Then
MeanDate = ActiveCell.Value
Else
FirstInvoiceDate = DateValue(Mid(InvoiceDate, 1, 8))
SecondInvoiceDate = DateValue(Mid(InvoiceDate, 11, 8))
DaysOfDiff = DateDiff("d", FirstInvoiceDate, SecondInvoiceDate)
MeanDate = DateAdd("d", Round((DaysOfDiff / 2), 0), DateValue(FirstInvoiceDate))
End If
End Function
答案 0 :(得分:0)
您可以使用TextTo列
Sub Macro1()
Selection.TextToColumns Destination:=Range("E:E"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(Array(1, 4), Array(1, 4)), TrailingMinusNumbers:=True
End Sub