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 / 问题 / 1718070
Accepted
Darren Bartrup-Cook
Darren Bartrup-Cook
Asked: 2022-04-27 01:39:40 +0800 CST2022-04-27 01:39:40 +0800 CST 2022-04-27 01:39:40 +0800 CST

交错(合并)两个溢出的范围

  • 772

我正在尝试合并两个大小相等的溢出范围,以便溢出范围 A 的第一列位于溢出范围 B 的第一列旁边。

我已经接近答案了,但与此同时,我有一种感觉,我正在以完全错误的方式去做。

例如:
在A1输入公式=SEQUENCE(3,2,1)。
在A5输入公式=CHAR(SEQUENCE(3,2,65))

这将给出以下两个范围。我追求的结果在第 9:11 行。
在此处输入图像描述

我的想法是用FILTERXML.

这将连接两个范围并开始构建 xml 字符串(在 cell 中输入F1):

=LET(ColumnNum,COLUMN(A1#),
     FirstTable, A1#,
     SecondTable, A5#,
     PrefixA, "<a" & ColumnNum & ">",
     SuffixA, "</a" & ColumnNum & ">",
     PrefixB, "<b" & ColumnNum & ">",
     SuffixB, "</b" & ColumnNum & ">",
     xml, PrefixA & FirstTable & SuffixA &
          PrefixB & SecondTable & SuffixB,
     xml)  

这完成了 xml 并返回最终溢出的范围。

=LET(StartCol,COLUMN(F1),
     xml,F1#,
     LastCol,StartCol+COLUMNS(xml)-1,
     finalxml,"<y>" & TEXTJOIN("",FALSE,IF(COLUMN(xml)=StartCol,"<x>","") & xml & IF(COLUMN(xml)=LastCol,"</x>","")) & "</y>",
     CHOOSE(SEQUENCE(,COLUMNS(xml)*2,1),
            FILTERXML(finalxml,"//x/a1"),
            FILTERXML(finalxml,"//x/b1"),
            FILTERXML(finalxml,"//x/a2"),
            FILTERXML(finalxml,"//x/b2")))  

这适用于两列的两个范围,但列数会改变,因此CHOOSE每次都需要手动更新语句。

有没有办法让这个工作?乐于采取LAMBDA解决方案,但怕我不能使用新TEXTSPLIT类型的功能。

microsoft-excel worksheet-function
  • 2 2 个回答
  • 315 Views

2 个回答

  • Voted
  1. ExcelEverything
    2022-04-27T04:22:25+08:002022-04-27T04:22:25+08:00

    在 A9 放

    =INDEX($A$1#,0,INT((COLUMN()-1)/2)+1)
    

    并在 B9 中放置

    =INDEX($A$5#,0,INT((COLUMN()-1)/2)+1)
    

    现在将 A9:B9 复制到 C9:D9。

    如果要交错的列多于两列,只需在两列的倍数范围内继续从 E9 开始复制。

    此外,如果您有三个以上的“源”范围,只需扩展第三个或第四个范围的公式,并将“/2”更改为“/3”或“/4”或您正在使用多少个范围。

    编辑:起初我想不出一种从单个动态范围公式中解析它的方法。遗憾的是,Excel 不允许使用静态数组语法连接数组,例如不允许使用 {A1#, A5#}。然而,最近添加的 MAKEARRAY 和 LAMBDA 提供了一个有趣的解决方案:

    单一配方解决方案!

    =LET(ranges, ($A$1#,$A$5#), rangecount, AREAS(ranges), rangetext, CELL("address",ranges), MAKEARRAY(ROWS(INDEX(ranges,0,0,1)),COLUMNS(INDEX(ranges,0,0,1))*rangecount, LAMBDA(r,cc, INDEX(($A$1#,$A$5#),r,INT((cc-1)/rangecount)+1,MOD(cc-1,rangecount)+1))))
    

    不幸的是,由于某种原因(我认为是一个错误),您不能在 lambda 函数中使用范围。所以最简单的就是定义你的范围两次——在 LET 语句中,一次作为 INDEX 的一部分。

    • 1
  2. Best Answer
    Máté Juhász
    2022-04-27T11:11:52+08:002022-04-27T11:11:52+08:00

    与您当前的公式相比,这是一个更容易扩大规模的公式:

    =LET(t_count, 3, tables, (A1#,A5#,A9#), row_count, ROWS(INDEX(tables,0,0,1)), col_count, COLUMNS(INDEX(tables, 0, 0, 1)) * t_count, s, SEQUENCE(row_count, col_count, 0), INDEX(tables, INT(s / col_count) + 1, INT(MOD(s, col_count) / t_count) + 1, MOD(s, t_count) + 1))

    或相同的公式分解以获得更好的概述:

    =LET(
        t_count, 3, 
        tables, ( A1#, A5#, A9#), 
        row_count, ROWS(INDEX(tables, 0, 0, 1)), 
        col_count, COLUMNS(INDEX(tables, 0, 0, 1)) * t_count,  
        s, SEQUENCE(row_count, col_count, 0), 
        INDEX(
            tables, 
            INT(s / col_count) + 1, 
            INT(MOD(s, col_count) / t_count) + 1, 
            MOD(s, t_count) + 1
        )
     )
    

    要修改公式,您只需更新t_count并列出tables.

    在此处输入图像描述

    • 1

相关问题

  • 如何对整列使用 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
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • 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
    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