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 / 问题 / 1424891
Accepted
Jorda
Jorda
Asked: 2019-04-13 14:10:10 +0800 CST2019-04-13 14:10:10 +0800 CST 2019-04-13 14:10:10 +0800 CST

将每第 n 列堆叠在一起

  • 772

这可能是一个微不足道的问题,但我无法弄清楚。我有一个包含重复列的数据集,我需要找出一种方法将每第 n 列堆叠在彼此之下。所以如果我们考虑这个:

原始数据

我们可以看到我们有重复的列,我需要我的数据像这样相互堆叠:

后

我的重复列是一个常量,所以我将始终有 5 个重复列。对此的任何帮助将不胜感激!

microsoft-excel macros
  • 1 1 个回答
  • 1200 Views

1 个回答

  • Voted
  1. Best Answer
    Alex M
    2019-04-13T15:16:34+08:002019-04-13T15:16:34+08:00

    这里需要一个循环OFFSET公式。

    设置

    所以我们有一个标题行和数据,比方说,A2:ZZZZ38。我们就把这个放在Sheet1. 我们将在 上设置输出Sheet2。

    精确度

    从概念上讲,我们很容易理解我们想要Sheet2!A2(以下为了简单起见,我们简称为这个单元格A2)重现Sheet1!A2。InA3我们想要下一个单元格,依此类推 - 直到我们查看了 中的所有记录Sheet1!A,然后我们想要返回第一行,但超过 5 列。

    这显然是OFFSET.

    公式

    =OFFSET(Sheet1!A$2,MOD(ROW()-2,COUNTA(Sheet1!A:A)-1),ROUNDDOWN((ROW()-2)/(COUNTA(Sheet1!A:A)-1),0)*5)

    演示

    我的数据比你的小很多;大到足以证明概念。

    这是Sheet1:

    在此处输入图像描述

    和输出Sheet2:

    在此处输入图像描述

    解释

    OFFSET有三个部分。从哪里开始,向下移动多少行(垂直偏移),以及越过多少列(水平偏移)。

    A - 从哪里开始

    Sheet1!A$2

    非常简单。

    B - 行偏移量

    MOD(ROW()-2,COUNTA(Sheet1!A:A)-1)

    找出我们所在的行并减去 2(我们从 开始A2,我们希望A2成为零偏移量)。将其除以我们正在计算的记录数(-1此处说明显示的标题行),然后取余数。这只是生成一个函数,该函数从0到[n-1]n是行数,然后再次从 0 开始计数。

    换句话说,对于一个有 8 条记录的表,这将返回:

    0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0 ...

    C - 列偏移量

    ROUNDDOWN((ROW()-2)/(COUNTA(Sheet1!A:A)-1),0)*5

    再取ROW()-2一次,并再次将其除以记录数——但这次我们不想取MOD该关系的(余数),而是想将它向下舍入到最接近的整数。这为我们提供了一个序列,该序列由等于记录计数的多个 0 组成,后跟多个 1、2 等。然后将其乘以 5(请参见下面的注释)。这提供了我们的列偏移量——每次循环行计数重置时,我们都会跳过另外 5 列。

    换句话说,对于一个有 8 条记录的表,这将返回:

    0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 10 ...

    公式,再次:

    =OFFSET(Sheet1!A$2,MOD(ROW()-2,COUNTA(Sheet1!A:A)-1),ROUNDDOWN((ROW()-2)/(COUNTA(Sheet1!A:A)-1),0)*5)

    这会不受限制地进入Sheet2!A2和复制。A:E

    注意事项

    1. 5 是硬编码的,因为您将列重复 5 作为数据的属性声明。如果需要,这可以扩展为动态函数(或者,当然,如果重复的次数固定,则只需更改列不是 5)。这可能是另一天的问题。
    2. 尽管文件很大,但这个公式不应该花任何时间来处理。它确实包含了整个专栏参考,但在内部COUNTA我认为这不会减慢您的速度。如果是这样,您可以轻松地将每个实例更改为COUNTA(Sheet1!A:A),COUNTA(Sheet1!A2:A38)因为从技术上讲我们已经知道数据的大小,或者甚至可以将该值硬编码为 37,只要您恰好有 37 行,它就可以工作。
    3. 我花了一半的时间来做对这件事,就是注意算术运算的顺序,并将公式的各个部分分成不同的列,以解决我遇到的问题——结果是缺少一对括号。从本质上讲,这实际上非常简单;这只是知道OFFSET存在然后计算出逻辑/算术以了解如何生成您需要抵消的对序列的问题。
    • 3

相关问题

  • 带有“和”运算符的 Excel 数据透视表

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

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

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

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

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

    • 6 个回答
  • Marko Smith

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

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

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

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +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
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +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