Excel 转置需求越来越复杂,隔列转置,有好多列,怎么办?

文摘   科技   2024-10-22 19:00   上海  
公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!


点击上方蓝字 --> 点击“...”--> 选择设为星标


之前教了大家行列转置的各种方法,用的是单行单列的案例,那么今天再升级一下难度,要以每 n 列为一组,将其转置有哪些好办法?


案例:


将下图 1 中的所有获客和流失数据都放到同一列中,并添加月份列加以区分。


效果下图 2 所示。


解决方案 1:


1. 在 B12 单元格中输入以下公式 --> 向右向下拖动单元格,复制公式:

=D2&""


2. 在“姓名”列后面插入一列“月份”列 --> 选中 B2:B31 区域 --> 输入以下公式 --> 按 Ctrl+Enter:

=(INT((ROW(A1)-1)/10)+1)&"月"


公式释义:

  • INT((ROW(A1)-1)/10):

    • int 函数的作用是将数字向下舍入到最接近的整数;

    • 语法为 int(需要进行向下舍入取整的数值);

    • 本例中一共有 10 个人名,所以每 10 行为一组,使用相同的编号,每递增 10 行编号步长增加一次;

    • 随着公式下拉,row 函数结果递增,用 0 到 9 依次除以 10 并向下取整,得到的结果为连续 10 行 0;下一个 10 行的结果则为连续 10 行 1,依此类推;

  • ...+1:将上述结果 +1,编号就变成了从 1 开始;

  • ...&"月":在序号后面加上文字“月”


3. 复制“姓名”列中的所有人名 --> 选中 A12:A31 区域 --> 粘贴


4. 将 B 至 D 列的公式复制粘贴为值。


5. 此时 C、D 列的数字仍然是文本格式,选中有绿色小箭头的数字区域 --> 点击区域左上角的“!”下拉框 --> 在弹出的菜单中选择“转换为数字”


6. 删除多余的行和列、复制格式、修改 C、D 列的标题。


解决方案 2:


其实这个方案的公式要复杂一些,很多同学因此看了了第一种就不想再学这个了,这个公式是借此教大家学会对 indirect 函数的灵活运用,所以一定要看下去。


1. 在 B12 单元格中输入以下公式 --> 向右向下拖动复制公式:

=INDIRECT(ADDRESS(ROW(A2),COLUMN(D1),4))&""


公式释义:

  • ADDRESS(ROW(A2),COLUMN(D1),4):

    • 之前的推文中我们已经讲解过这个函数,作用是提取出单元格的地址;

    • 语法为 ADDRESS(行号,列号,引用类型),此处的引用类型为 4,表示相对引用;

    • 本例因为既要横向引用又要纵向引用,所以两个参数分别要用到 row 和 column,这样才能拖动后顺位到下一个行或列;

  • INDIRECT(...):该函数的作用是返回参数中单元格的值;

  • &"":如遇空单元格,则返回空值,而不是显示 0,避免引起误解


2. 后面的步骤就跟前一个解决方案完全一样。


转发、点赞、在看也是爱!

Excel学习世界
你遇到的所有 Excel 坑,我都帮你趟过了。
 最新文章