![Excel 2013 中的笛卡尔积](https://linux22.com/image/1566925/Excel%202013%20%E4%B8%AD%E7%9A%84%E7%AC%9B%E5%8D%A1%E5%B0%94%E7%A7%AF.png)
我有一个这种格式的 Excel。
+----------+-------+---------+--------+--------+
| TicketId | PubId | PubName | Model1 | Model2 |
+----------+-------+---------+--------+--------+
| 1234 | 12 | abc | xyz1 | pqr1 |
| 1235 | 34 | iuy | fgy6 | piu8 |
+----------+-------+---------+--------+--------+
我的目标是创建一个如下所示的表格。
+----------+---------+-------+
| TicketId | Display | Value |
+----------+---------+-------+
| 1234 | PubId | 12 |
| 1234 | PubName | abc |
| 1234 | Model1 | xyz1 |
| 1234 | Model2 | pqr1 |
| 1235 | PubId | 34 |
| 1235 | PubName | iuy |
| 1235 | Model1 | fgy61 |
| 1235 | Model2 | piu8 |
+----------+---------+-------+
我知道它是笛卡尔积或交叉应用(就 SQL 而言),但我想在 Excel 中执行它。
有没有办法通过 Excel 来表示这种类型的数据?
答案1
假设源数据占据 A1:E3。
假设目标头占用G1:I1。
输入公式:
G2=INDIRECT(ADDRESS(2+(ROW()-2)/4,1))
H2=INDIRECT(ADDRESS(1,2+MOD((ROW()-2),4)))
I2=INDIRECT(ADDRESS(2+(ROW()-2)/4,2+MOD((ROW()-2),4)))
将 G2:I2 向下拖至 G9:I9。