文档视界 最新最全的文档下载
当前位置:文档视界 › 基于地图选择的Excel动态图表(修正)

基于地图选择的Excel动态图表(修正)

基于地图选择的Excel动态图表(修正)
基于地图选择的Excel动态图表(修正)

作图思路:地图由一个个自选图形绘制而成,读者点击某个地区

的图形,会触发一个宏过程,这个宏会记录下用户选择的地区名,并修改图形的填充效果。动态图表模型则会根据宏所记录的地区名变换

图表的数据,产生动态交互的效果。

(地图图形的准备:

首先,在网上找到一个矢量格式的地图文件。所谓矢量格式,是使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,其文件后缀名一般

为.WMF、.AI、.EPS、.CDR等。Excel可以读取.WMF格式的文件,其他格式的一般需要专门的软件打开。导入Excel后,该地图可以打散为一个个的自选图形(右键-取消组合),每个自选图形对应一个区域。选中自选图形,在左上角名称框为自选图形命名,然后回车)

或者用自由曲线绘制自选图形

图1 基于地图选择的动态图表模型。

1.编写公共宏过程

单击菜单“工具→宏→Visual Basic编辑器”(或Alt+F11键),用户选择后调用的公共宏过程。

在左侧窗口中选择ThisWorkbook,在右侧窗口中输入如下代码:--------------------------------------------------------------------------

Sub user_click()

'1、取A1单元格值,将上次选择的地图版块填充黄色,即还原填充色

ActiveSheet.Shapes(Range("A1").Value).Fill.ForeColor.Sch emeColor = 58

'2、将当前选择的地图版块名称填值到A1

Range("A1").Value =

ActiveSheet.Shapes(Application.Caller).Name

'3、将当前选择的地图版块填充红色

ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.Sche meColor = 14

End Sub

--------------------------------------------------------------------------

2.为每个地区图形指定宏调用

以湖北省为例,选中湖北的图形,鼠标右键→指定宏

在宏名输入框中输入如下代码:

'https://www.docsj.com/doc/9612406381.html,er_click’

按同样方法,为其他省的图形一一添加宏代码。熟悉VBA的读者可使用如下宏代码批量添加:

-------------------------------------------------------------------------

Sub auto_add_macro()

'新建一个模型时手动运行,一次性添加宏

For i = 1 To ActiveSheet.Shapes.Count

'5表示对象类型是地图版块

If ActiveSheet.Shapes(i).Type = 5 Then

ActiveSheet.Shapes(i).OnAction =

"'https://www.docsj.com/doc/9612406381.html,er_click'"

End If

Next

End Sub

-------------------------------------------------------------------------

3.测试选择器

现在可以测试选择器了。测试之前,先手动为单元格A1初始化一个值,如“hubei”。然后,用鼠标逐一点击各省的图形,你会发现选择的结果会以拼音名反映在单元格A1中,图形的颜色也会跟随变化。至此,一个地图形式的选择器已经完成。

4.准备动态图表数据源

假设各省的数据存放在工作表data1中,其中A列为省名的拼音名,B列为省名,C~N列为各省1~12月的指标数据,如图5 所示。

图5 动态图表的数据组织。

单元格A2引用工作表dashboard中A1的值,即当前选中的省名。单元格B2:N2均为公式引用,使用Vlookup函数从数据表格中查找返回当前选中省的对应数据。以单元格C2为例,其公式

为: =VLOOKUP($A$2,$A$5:$N$36,COLUMN(C5),0)。

5.制作图表

在工作表data1中以B2:N2为数据源制作图表,格式化至你喜欢的样式,然后将其复制粘贴到工作表dashboard中,放置在地图图形的右侧。

现在,用鼠标在地图上选择不同的省份,你会发现图表将自动跟随变化。至此,一个动态图表已经完成。

相关文档