我想在 Excel 2007 中定义自定义数据类型,即日期范围。
基本上,它是一个日期数组或较小的日期范围,例如:
"{ 01-26-1991 , 01-01-2004 to 12-31-2004 , 12-13-2017 }"
这将定义任意日期集合,在上述情况下,1991 年 1 月 26 日、2004 年全年和 2017 年 12 月 13 日。
我希望能够将上述语法放在一个单元格中,并让 Excel 负责管理,这样我就可以调用 cell.isWithin(otherDate) 来检查日期是否在指定的范围内,并允许通常的 Excel 数据透视表按范围内的第一个日期进行排序。
我可以编写代码来执行上述操作,包括将数据从字符串转换为自定义对象并转回,但不确定挂钩,以便 excel 可以将其视为可以排序的数据类型(按最早日期),并且我编写的任何 vba 函数都不必创建对象、将字符串解析为对象、修改对象,并在每次必须更改或查询值时生成输出字符串。
有什么方法可以实现这一点吗?或者有另一种技术可以让我以某种模糊合理的速度做到这一点?
该数据类型将用于通过条件格式生成奇数自定义甘特图。
答案1
抱歉,我对 Excel 中传递的那种类型不太熟悉。
但如果您的收集是任意的,我会通过存储一个单独的工作表来处理它,其中包含带有日期范围列表的表格。
1 2
A 1991-01-26 1991-01-26
B 2004-01-01 2004-12-31
C etc.
然后创建一个简单的 VBA 函数,该函数接受日期参数并返回布尔值。
Function IsWithinDate(dCell as date) as Boolean
// Loop to check against each date range in your table
// Return TRUE or FALSE
IsWithinDate = TRUE
End Function
最后让你的条件格式使用你的函数的结果:
=IsWithinDate(A1)