Excel 2013 中的笛卡尔积

Excel 2013 中的笛卡尔积

我有一个这种格式的 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。

相关内容