通过VBA 程序找出excel表中B列的最大日期,并且排除一个不要的年份的日期,如12/31/2099(日期格式),急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过VBA 程序找出excel表中B列的最大日期,并且排除一个不要的年份的日期,如12/31/2099(日期格式),急相关的知识,希望对你有一定的参考价值。
参考技术A 这需要用VBA吗?你日期都在B列,假设你需要排除的年份为2011,C1输入=TEXT(MAX(IF(YEAR(B:B)<>2011,B:B)),"YYYY-M-D")
按CTRL+SHIFT+ENTER结束即可。追问
用的吧,将它写成巨集,就可以用到你的方法了,不过显示的是#VALUE!还是未能实现功能。。。
追答巨集为何物?
追问就是宏,在excel操作的全过程将其录制成宏,就可以看到相应的代码了
追答直接用我的方法,用不到宏啊……
追问恩,知道~刚刚有试重新弄张日期表,试了下是可以的,但是针对我要做的表格实现不了,我这边的时间格式是mm/dd/yyyy
追答表发给我看看,19165827@qq.com
参考技术B Sub 最大日期()Dim arr, r%, i%, p$
r = Range("B65536").End(3).Row
arr = Range("B1:B" & r)
Mydt = arr(1, 1)
For i = 1 To r
p = Mid(arr(i, 1), 1, (InStr(arr(i, 1), "/") - 1))
If p <> "2013" Then Range("B" & i) = "" Else _
If arr(i, 1) - Mydt >= 0 Then Mydt = arr(i, 1)
Next
MsgBox "最大日期:" & Mydt
End Sub
假设年份不是2013均排除追问
还是报错,执行阶段错误5:程序呼叫或引数不正确。。。还请继续指点
追答我这里好的要不给个联系,我把EXCEL文档传给你
追问发我邮箱吧429060741@qq.com 谢谢啊
本回答被提问者采纳 参考技术C 应该可以满足你的需求 试一下吧Sub test()
Dim i%, j%
Dim Arr, v
v = 2014 ’不要的年
j = [b65536].End(xlUp).Row
ReDim Arr(1 To j)
For i = 2 To j
If Year(Cells(i, 2)) <> v Then
Arr(i) = Cells(i, 2)
Else
Cells(i, 2).Interior.Color = vbYellow
End If
Next i
v = Arr(1)
For i = 2 To j
If Arr(i) > Arr(i - 1) Then
v = Arr(i)
End If
Next i
MsgBox v
End Sub追问
编译错误:缺少语句,方便留个联系方式,我将表发你?
通过vba在excel中的“dd/mm/yyyy”日期格式
【中文标题】通过vba在excel中的“dd/mm/yyyy”日期格式【英文标题】:"dd/mm/yyyy" date format in excel through vba 【发布时间】:2014-09-28 10:14:57 【问题描述】:我正在尝试通过 excel-vba 在 excel 表中以“dd/mm/yyyy”格式编写日期。我使用Cells(1, 1).Value = Format(StartDate, "dd/mm/yyyy")
实现了它。我的单元格值是30/04/2014
,这很好.....
但是有一些奇怪的问题......
因为我必须通过每次将 startDate 加 1 来迭代整个月,所以下一个值是 1/5/2014
而不是 01/05/2014
直到每个月的 12 日 12/5/2014
并且从 13 日开始,月份再次发生变化两位数13/05/2014
....
我希望全部为两位数,因为我必须再次使用 Range.Find 方法搜索这些日期,在该方法中,我使用 "dd/mm/yyyy" fromat 传递值。
【问题讨论】:
在调试时,我得到两位数的值01/05/2014
【参考方案1】:
我明白了
Cells(1, 1).Value = StartDate Cells(1, 1).NumberFormat = "dd/mm/yyyy"
基本上,我需要设置单元格格式,而不是设置日期。
【讨论】:
【参考方案2】:您的问题是尝试通过在 Excel 中的日期序列中添加 1 来更改月份。1 等于 1 天。尝试使用以下方法更改您的月份:
NewDate = Format(DateAdd("m",1,StartDate),"dd/mm/yyyy")
【讨论】:
我必须添加天数,而不是月数...我在调试时获得了所需的结果,但是在将其插入 excel 时,格式不考虑日期和月份列中的 2 位数字StartDate
是什么类型的对象?可以试试:Format(StartDate+1,"dd/mm/yyyy")
,看看能不能得到你想要的格式?
您还可以使用范围的.NumberFormat
属性。例如,如果您希望格式化为 dd/mm/yyyy 的日期位于单元格 A1 中,则可以使用 Range("A1").NumberFormat = "dd/mm/yyyy"
。我不确定这与Format
有何不同(或为什么),这只是一个可能有帮助的建议。以上是关于通过VBA 程序找出excel表中B列的最大日期,并且排除一个不要的年份的日期,如12/31/2099(日期格式),急的主要内容,如果未能解决你的问题,请参考以下文章
Access 和 VBA:在导入期间将日期添加到一列的所有值