什么是Excel高手?
90%的人都认为能写长长的公式或者VBA代码的就是高手,实际上并不是这样的。
Excel高手,应该是将复杂的问题简单化,能用最简单的办法搞定工作,那才是高手。
怎么才能将复杂的问题简单化?
这就涉及到表格设计,一个真正的高手,善于设计自己的表格,下面通过一个实际案例进行说明。
方法一:
1.首先,让我们创建两个工作表,并输入数百个不同的内容进行演示。我需要合并这两个工作表。让我们同时打开两个工作表。
2.为便于演示,将表1的工作簿标签更改为“工作1、2、3”的形式,右键单击其中一个标签,选择“选择所有工作表”,即可选择表1的所有内容。再次右击并选择“移动或复制工作表”。
3.出现“移动或复制”选项框。我们点击“select”将选中的工作表移动到“table2”,选择“movetothelast”,点击“ok”。
4.因此,表1的内容合并到表2中。
方法二:
假如你每个月的表的名称是“一月份”,“二月份”……这样的,那么在总表的“一月份”对应的B2单元格内写公式“=VLOOKUP(A2,一月份!A:B,2,0)", 在”二月份对应的C2中就把这个公式中的“一月份!”换成“二月份!”,以此类推,一直到12月份,然后把刚写了公式的这12个单元格选中,往下一拉,就成功了。
方法三:
1、用文档批量命名器把你需要的EXCEl文档统一命名为:1,2,3,4...N.xlsx
2、插入以下宏代码并执行:
Sub liyoushang()
For i = 1 To N
Dim bod$
bod = "='C:\Users\think\Desktop\新建文件夹\" & "[" & i & ".xlsx" & "]" & "Sheet2'!" & Range("A1: A4").Address
'根据需要修改文件路径,Sheet2为工作薄名,Range("A1: A4")为需要copy的单元格区域
Cells(4 * i - 3, 1).Resize(4, 2).FormulaArray = bod
Next i
End Sub
以上代码成功实现将N个关闭的EXCEL文档Sheet2中Range("A1: A4")中的内容提取到同一个文档中。已试验成功!
tips:
此宏遇到的难点是将一个非数组数据放入一个数组变量中。
普通的先定义一个数组变量,读取Range("A1: A4").Address中8个值,再将这个8个值赋予Cells(4 * i - 3, 1).Resize(4, 2).Formula
,另外将一组单元格数据赋给另一组单元格,可以用
sheet1.range("a1:i100").copy sheet2.range("a1:i100")
或者sheet2.range("a1:i100").value= sheet1.range("a1:i100").value
但在这里,我在试验时,bod被视为一个值并非一组值。所以是不行的,最后用.FormulaArray数组赋值成功了。
bod = "='C:\Users\think\Desktop\新建文件夹\...关于"='C这里的等于号是因为excel没有提取关闭文档的函数(一般要提取关闭文档的excel单元格内容,直接在单元格中输入='C:\Users\think\Desktop\新建文件夹\[2.xlsx]Sheet2'!A1,如需构造类似INDIRECT的函数,见本blog相关博文),所以要用“=”,最终vba实现的是在单元格中批量输入“='C:\Users\think\Desktop\新建文件夹\[2.xlsx]Sheet2'!$A$1:$A$4”
不要迷恋高手,表格设计好了,你自己就是高手!
你眼中的高手是什么样子?
联系客服