
本文研究前面的例子,以9个酒店的200条顾客评论数据为基础,使用excel vba解决相对复杂的问题:根据7个二分变量,计算生成旅游动机变量。
0信息分析04:excel的if函数与vba初步
工具/原料
excel 2010
1.基本设置:显示【开发工具】菜单
1:excel 2010默认的情况下,【开发工具】菜单没有显示出来。
点击【文件】——【选项】

2:在弹出的窗口,点击【自定义功能区】——【主选项卡】
确保【开发工具】被选中,点击【确定】

基本设置2:另存为“启用宏的工作簿”
1:excel 2010增加了一些文件类型,为了程序运行方便,建议保存为“启用宏的工作簿”点击【文件】——【另存】
选择“启用宏的工作簿”进行保存。

基本设置3:r1ci引用式样
1:为了程序编写的方便,我们希望用数字显示列号,而不是a、b、c这种字母
点击【文件】——【选项】——【公式】
点选【r1ci引用式样】,点击【确定】即可


使用excel vba
1:9个酒店的200条在线评论数据的原始数据中是没有【旅行动机】这个变量的,是从前面的7个旅行动机变量(0表示不是,1表示是)合并生成的。
我们现在用excel vba程序实现它。
0信息分析04:excel的if函数与vba初步

2:这个工作需要单元格从【v2】——【v201】,我们需要循环语句for,那么我们以i表示行号,就是
for i=2 to 201
单元格cells(i,22)的操作
next i
----------
列10-16也可以做一个循环,用j表示列号
那就
for i=2 to 201
for j=10 to 16
单元格cells(i,j)的操作
next j
next i
------------
每行怎么个操作呢,就是如果cells(i,j)的值等于1,那么cells(i,22)的值,等于j列对应的第一行的值,cells(1,j)
if cells(i,j).value=1 then
cells(i,22).value=cells(1,j).value
endif
------------程序就是
for i = 2 to 201
for = 10 to 16
if cells(i, j).value = 1 then
cells(i, 22).value = cells(1, j).value
end if
next j
next i

3:点击【开发工具】——【visual basic】
在弹出的窗口,点击【插入】——【模块】
点击【插入】——【过程】
输入一个程序名称即可




4:写入程序即可,点击菜单上的三角按钮运行程序
运行后,点击vb界面左侧的excel图标,查看运行效果。



希望本文信息分析05:Excel VBA初步能帮到你。