Google Sheets 如何将表头行转换为对应非空行的重复映射值
Google Sheets 实现表头行转换为重复行值的操作
原始表格结构
| 行号 | A列 | B列 | C列 | D列 | E列 |
|---|---|---|---|---|---|
| 1 | Email 1 | Email 2 | Email 3 | Email 4 | Email 5 |
| 2 | some@email.com | butt@cheeks.com | column@c.com | one@for.com | almost@done.com |
| 3 | another@that.com | fart@face.com | not@d.com | the@money.com | the@end.com |
| 4 | okay@that.com | much@typing.com | two@for.com | some@email.com | |
| 5 | all@different.com | boring@example.com | |||
| 6 | who@cares.com | some@email.com | |||
| 7 | tidious@question.com |
预期输出效果
| 行号 | A列 | B列 |
|---|---|---|
| 1 | Email ID | |
| 2 | some@email.com | Email 1 |
| 3 | some@email.com | Email 2 |
| 4 | some@email.com | Email 5 |
| 5 | another@that.com | Email 1 |
| 6 | okay@that.com | Email 1 |
| 7 | all@different.com | Email 1 |
| 8 | who@cares.com | Email 1 |
| 9 | tidious@question.com | Email 1 |
| 10 | butt@cheeks.com | Email 2 |
| 11 | fart@face.com | Email 2 |
| 12 | much@typing.com | Email 2 |
| 13 | boring@example.com | Email 2 |
| 14 | column@c.com | Email 3 |
| 15 | not@d.com | Email 3 |
| 16 | one@for.com | Email 4 |
| 17 | the@money.com | Email 4 |
| 18 | two@for.com | Email 4 |
| 19 | almost@done.com | Email 5 |
| 20 | the@end.com | Email 5 |
实现方案
在任意空白工作表的A1单元格粘贴以下公式,回车后即可自动生成完整的标准化结果:
={ {"Email", "Email ID"}; HSTACK( TOCOL(A2:E7, 1), TOCOL(IF(A2:E7<>"", A1:E1, ""), 1) ) }
公式逻辑说明
TOCOL(范围, 1):将多列横向数据批量拉成单列,第二个参数1表示自动忽略空单元格IF(A2:E7<>"", A1:E1, ""):逐单元格判断原始数据是否为空,非空则返回对应列的表头值,空值返回空字符串,避免匹配错位HSTACK(列1, 列2):将处理好的邮箱值列和对应表头列横向拼接为最终的两列结构- 若后续需要新增原始数据,可将公式中的固定范围
A2:E7改为动态范围A2:E,即可自动抓取A到E列第2行以下的所有非空数据,无需手动调整公式范围
内容的提问来源于stack exchange,提问作者TylerMills
相关产品推荐
相关产品推荐

