1、前言
数据经常有“列表”、“表格”两种表现形式
列表形式:
Name Value
张三 31
张三 32
……
李四 41
李四 42
李四 43
……
王二 21
王二 22
……
数据库就使用这种形式,但其Key有冗余。
表格形式:
Name Value1 Value2 Value3 Value……
张三 31 32
李四 41 42 43
王二 21 22
这种形式Key没有冗余,但Value究竟有几个不好确定,会形成Sparse矩阵,不利于关系数学(矩阵)处理。
两种形式各有利弊,关键是能够随意转换。
2、“列表”→“表格”
2.1、VBA
VBA编程思路如下:
目标行指针Table_Row;
目标列指针Table_Column;
Table_Row=Table_Start-1
For(List_Row,List_Start,List_End)
比较List_Row.List_Key、Table_Row.Table_Key
如果相等:
Table_Column+=1
如果不等:
TableRow+=1
List_Key→[Table_Row].Table_Key
Table_Column=1
List_Data→[Table_Row,Table_Column].Table_Data。
Next List_Row
2.2、交互式操作
Key 个数n 起始行 结束行 地址 数据
其中:
Key:应该是唯一值,可以使用工具得到
个数:可以使用CountIf、DcountIf、Frequency、透视表得到
起始行:可以使用Match得到
结束行:可以使用Match得到,也可以使用起始行+个数得到
地址:Address(起始行,列,1)&":"&Address(结束行,列,1)
数据:Transpose(Indirect(地址))
注意:Transpose应该以最大n输入数组公式,然后删除NA
但这有一个后遗症,当n=1,数组形式的Transpose会形成n个重复,因此需要对n排序,对于n=1的,不用数组形式的Transpose
3、“表格”→“列表”
3.1、VBA
VBA编程思路如下:
List_Row=List_Start
For(Table_Column,Table_Start,Table_End)
Table_Key→List_Key
Table_Column.Table_Value→List_Value
List_Row+=n
Next Table_Column
3.2、交互式操作
纵向选定ValueI,然后重复n次,当然,不能忘记同时复制n次Key
邪恶的GFW,你就饶了我吧:(
Blog Archive
2009-09-06
Excel中查询函数的简单小结
Excel中查询函数纷繁复杂,在此简单做个小结,防止遗忘
1、地址函数
Rows/Columns(区域),返回区域包含的行/列数
Row/Column(单元),返回单元是第几行/列
Address(行,列,$$|$R|R$|RR,R1C1|A1,Sheet),返回文本形式的地址
Indirect(文本形式的地址),返回引用
Offset(基点,行偏移,列偏移,高,宽),返回引用
2、返回符合条件个数的查询函数
Countif(区域,条件)
DCount(区域,列,条件)
Frequency(区域,界限数组)
3、返回值的查询函数
Lookup(值,单行/列区域),返回区域后面1行/列的值
Lookup(值,多行/列区域),返回区域最后1行/列的值
Hlookup(值,区域,结果在第几行,1精确|0近似)
VLookup(值,区域,结果在第几列,1精确|0近似)
4、返回位置的查询函数
Match(值,区域,类型),返回第几行匹配
5、依据位置的查询函数
Index(区域,行,列),返回单元格的内容
1、地址函数
Rows/Columns(区域),返回区域包含的行/列数
Row/Column(单元),返回单元是第几行/列
Address(行,列,$$|$R|R$|RR,R1C1|A1,Sheet),返回文本形式的地址
Indirect(文本形式的地址),返回引用
Offset(基点,行偏移,列偏移,高,宽),返回引用
2、返回符合条件个数的查询函数
Countif(区域,条件)
DCount(区域,列,条件)
Frequency(区域,界限数组)
3、返回值的查询函数
Lookup(值,单行/列区域),返回区域后面1行/列的值
Lookup(值,多行/列区域),返回区域最后1行/列的值
Hlookup(值,区域,结果在第几行,1精确|0近似)
VLookup(值,区域,结果在第几列,1精确|0近似)
4、返回位置的查询函数
Match(值,区域,类型),返回第几行匹配
5、依据位置的查询函数
Index(区域,行,列),返回单元格的内容
Subscribe to:
Posts (Atom)