引子:本文的内容整理自chandoo.org,略有调整。主要是学习作者制作这样一个工作簿的思路和做法,以及运用的Excel技术技巧,当然这个工作簿也有一些局限,例如,在同一个地方只能安排连续的2天,这是需要进一步改进的地方。
Excel的常见用途之一是维护事件、安排或其他日历相关内容的列表。我们可以使用一些想象力以及条件格式、少量的公式和几行VBA代码,在Excel中创建一个流畅的交互式日历,使信息可视化。
首先,给出这个交互式日历的演示,如下图1所示。
图1
1.在表中收集所有事件数据,如下图2所示。
图2
2.创建日历
示例中,所有的事项都安排在2021年5月和6月,于是只需手动创建这两个月的日历,如下图3所示。
图3
3.命名日历单元格区域
选择日历单元格区域,将其命名为“calendar”。
4.指定某单元格来识别所选择的日期
在工作簿中选择一个空单元格,将其命名为“selectedCell”,该单元格将用于识别用户选择的日期。
5.编写事件代码
当用户在“calendar”区域中选择某单元格时,代码将识别所选单元格。
代码语言:javascript复制Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("calendar")) Is Nothing Then
[selectedCell] = ActiveCell.Value
End If
End Sub
6.创建公式,当选择有效日期时显示详细情况
每件事有与之相关的4个详细信息:标题、日期、地点和详细情况描述。当用户选择日历中的日期时,显示事情的详情。由于所选的日期在“selectedCell”中,我们使用VLOOKUP、IF、IFERROR来完成:
- 如果所选日期中有事件,则获取单元格中事件标题,否则为空:=IFERROR(VLOOKUP(selectedCell,table_of_events, event_title_column, false),"")
- 获取其余的事件详细信息,但如果日期没有事件,则将它们留空。
7.在calendar工作表中,添加4个文本框并将其链接到单元格。
8.设置条件格式来高亮显示所选日期。
9.清理工作表并格式化,以便看起来更简洁清晰。