AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1563194
Accepted
I Z
I Z
Asked: 2020-06-24 04:16:53 +0800 CST2020-06-24 04:16:53 +0800 CST 2020-06-24 04:16:53 +0800 CST

如何在复制某些列的 Excel 中重塑日期?

  • 772

我有一个有 5 列的表,如下所示:

A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
...

我需要它把它重塑成一个像这样的 3 列表:

A1 B1 C1 
A1 B1 D1 
A1 B1 E1
A2 B2 C2 
A2 B2 D2 
A2 B2 E2
A3 B3 C3 
A3 B3 D3 
A3 B3 E3
...

在 Excel 2016 中最简单的方法是什么?蒂亚!

microsoft-excel microsoft-excel-2016
  • 4 4 个回答
  • 2834 Views

4 个回答

  • Voted
  1. Jessica Tiberio
    2020-06-24T04:24:34+08:002020-06-24T04:24:34+08:00

    将数据从列转置到行的最简单方法如下:

    1. 选择并复制要从列更改为行的数据
    2. 右键单击 Excel 数据表上的新位置
    3. 选择“选择性粘贴”,然后选择粘贴“转置 (T)”

    资源

    • 1
  2. Best Answer
    Gary's Student
    2020-06-24T05:10:47+08:002020-06-24T05:10:47+08:00

    在F1中输入:

    =INDEX(A:A,ROUNDUP(ROWS($1:1)/3,0))
    

    在G1中输入:

    =INDEX(B:B,ROUNDUP(ROWS($1:1)/3,0))
    

    在H1中输入:

    =OFFSET($C$1,ROUNDUP(ROWS($1:1)/3,0)-1,MOD(ROWS($1:1)-1,3))
    

    并向下复制:

    在此处输入图像描述

    • 1
  3. FlexYourData
    2020-06-24T12:13:36+08:002020-06-24T12:13:36+08:00

    如果您有大量数据,您可以考虑使用 PowerQuery 来避免使用大量公式。

    单击数据中的任意位置并使用数据>获取和转换数据>从表/范围:

    在此处输入图像描述

    在 Power Query 编辑器中,选择要取消透视的列并使用 Transform>Any Column>Unpivot Only Selected Columns(使用“Unpivot Columns”下拉列表):

    在此处输入图像描述

    取消透视后,右键单击“属性”列并选择“删除”:

    在此处输入图像描述

    现在使用 Home>Close & Load 将结果放入工作簿的工作表中。

    这种方法的一个好处(除了快速和易于理解之外)是,如果您将更多数据添加到源表中,您可以通过右键单击输出并从上下文菜单。

    • 1
  4. mark fitzpatrick
    2021-05-10T02:02:42+08:002021-05-10T02:02:42+08:00

    您要做的是 Unpivot 或 Melt。我可以想到三种方法来做到这一点:

    • 像 Gary 一样创建一个 OFFSET 公式。
    • 像 Flex 一样在 Power BI 引擎中使用 PowerQuery。
    • 创建一个动态数组,我将在下面展示。

    每个都有优点和缺点。Offset 的优点是在您输入数据后立即给出答案。不利的一面是,您必须将公式复制到目标位置,因此如果输入数据的大小发生变化,则必须相应地复制公式。此外,OFFSET 是一个不稳定的函数,它可能会也可能不会影响工作簿的性能。

    Power Query 方法要求您在每次更改数据时刷新数据。

    动态数组就像偏移量一样,它们立即计算,但它们具有随着数据变化而重塑自身的优势,并且它们是非易失性的。它们的缺点是它们会自行将结果动态写入工作表中,因此如果您有任何占用的单元格,公式将溢出。

    也就是说,这是一种使用 LET 的动态数组方法,可以更容易地理解、修改和调试。

    =LET( unPivMatrix, A1:B3,
          byMatrix, C1:E3,
           upC, COLUMNS( unPivMatrix ),
           upCells, MIN( ROWS( unPivMatrix ), ROWS( byMatrix ) ) * upC,
           upSeq, SEQUENCE( upCells,, 0 ),
           byC, COLUMNS( byMatrix ),
           mux, INDEX( unPivMatrix, upSeq/upC + 1, MOD( upSeq, upC ) + 1 ),
           demux, IFERROR( INDEX( byMatrix,
                                  IFERROR( INT( SEQUENCE( upCells, byC,0 )/byC/upC ) + 1,
                                           MOD( upSeq, upC ) + 1 ),
                                  SEQUENCE( 1, byC + 1 ) ),
                            mux ),
           demux
         )
    

    unPivMatrix是您要分发的列 - 因此这些将是您示例中审阅者的身份。byMatrix是您想要取消透视它们的列 - 这些将是您示例中的 SKU 组件。想想 excel 中的数据透视表。byMatrix是数据透视所依据的行,unPivMatrix是要取消透视的数据。

    此公式首先为 unpivot 创建一个形状,以便可以将其多路复用到单个列(称为mux),如下所示:

    多路复用器
    C1
    D1
    E1
    C2
    D2
    ...

    结果被放入demux中,它首先创建一个 byMatrix 数组,该数组为unPivMatrix中的每一列重复byMatrix列值

    解复用器 col1 解复用器 col2
    A1 B1
    A1 B1
    A1 B1
    A2 B2
    A2 B2
    A2 B2
    A3 B3

    通过引用比byMatrix中实际存在的列多一列,INDEX 函数会引发错误。

    解复用器 col1 解复用器 col2 额外的列
    A1 B1 #参考!
    A1 B1 #参考!
    A1 B1 #参考!
    A2 B2 #参考!

    利用此错误将两个数组(byMatrix和mux的demux)有效地融合在一起。通过将结果包装在 IFERROR 中,我们可以替换 #REF!来自mux的值出错。

    解复用器 col1 解复用器 col2 额外的列
    A1 B1 C1
    A1 B1 D1
    A1 B1 E1
    A2 B2 C2

    这个公式现在是基于动态数组的通用反透视。即,您可以将任何范围放入unPivMatrix和byMatrix,并以 UNPIVOT 在 Power Query 中的工作方式获得您想要的结果。

    • 0

相关问题

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • 选择一个特定的下拉选项,将光标置于或突出显示另一个单元格以进行数据输入

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve