![](/img/trans.png)
[英]How to subtract two date columns(format: 2019-01-31 23:45:45+01:00) in Excel and display in hours?
[英]How to get earliest date and latest date from a Date Column which has values in the format “01/01/2019 09:01:00 AM”?
我在excel中有一个列,其日期为以下格式。
当我使用worksheet.cells(row,col)读取数据时,它是字符串格式
8/10/2019 9:01:00 AM 8/6/2019 9:01:00 AM 8/22/2019 9:01:00 AM 8/18/2019 9:01:00 AM 8/14/2019 9上午:01:00
目的是获取最早的日期和最新的日期,并使用它们来过滤另一个excel。
有没有一种简单的方法可以从date列中获取两个日期?
对于上面的示例,我想要最早的日期= 08/06/2019和最新的日期= 08/22/2019
我没有广泛使用VBA,这是我第一次使用,并且我正在更新现有的VBA代码
假设日期类型的字符串位于单元格A1:A10
(例如)。
使用数组公式
使用CTRL + SHIFT + ENTER输入下面的公式应分别获得最小和最大日期。
=MIN(DATEVALUE(A1:A10))
=MAX(DATEVALUE(A1:A10))
使用VBA
Option Explicit
Sub MinAndMaxDates()
Dim sourceSheet As Worksheet
Set sourceSheet = ThisWorkbook.Worksheets("Sheet2")
Dim inputArray() As Variant
inputArray = sourceSheet.Range("A1:A10") ' For example
Dim smallestDate As Date
smallestDate = CDate(inputArray(1, 1))
Dim largestDate As Date
Dim rowIndex As Long
For rowIndex = LBound(inputArray, 1) To UBound(inputArray, 1)
inputArray(rowIndex, 1) = CDate(inputArray(rowIndex, 1)) ' Or could use DateValue
smallestDate = Application.Min(smallestDate, inputArray(rowIndex, 1))
largestDate = Application.Max(largestDate, inputArray(rowIndex, 1))
Next rowIndex
End Sub
除非您要处理大量日期,否则上面的内容应该没问题。 如果不是这样,则可以改善循环的内部逻辑。
(这是不可能的是smallestDate
和largestDate
都将被分配/同一循环迭代期间改变,所以它们应该在使用单独的(互斥)的分支If-Elseif-End If
代替函数Max
和Min
。这样的当前日期仅被比较一次。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.