在 Excel 中创建自定义可排序数据类型

在 Excel 中创建自定义可排序数据类型

我想在 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)

相关内容