在 Google 表格中将一组列合并为一个 "set of columns"
Merge a group of set of columns into one single "set of columns" in Google Sheets
问题背景:
我正在创建一个 Google 传播sheet 来帮助我跟踪游戏中不同角色进程的状态,称之为 DFFOO。
游戏按 crystal 颜色分割角色,我想利用这一点来简化寻找角色和了解其棋盘农场状态的任务。
这是一个例子:
Sheet IFRIT 农业
包含 IFRIT 召唤板耕作状态的当前状态,{n=none,r=奖励,m=掌握}
| Black | Status | Red | Status | ...
| Squall | m | Vanille | r |
| Noctis | n | Another | r |
Sheet SHIVA 农业
包含 SHIVA 召唤板农场状态的当前状态,{n=none,r=rewarded,m=mastered}
| Black | Status | Red | Status | ...
| Squall | r | Vanille | r |
| Noctis | n | Another | r |
Sheet 人物发布
包含有关游戏新横幅的信息,角色有一段时间可以获得双倍经验,这说明了不同面板的当前状态以及 "x2" 结束(结束提升)到帮我提前计划一下。
| Character | IFRIT | SHIVA | ... | End boosted |
| Squall | m | r | ... | 21-Oct |
| Vanille | r | r | ... | 10-Oct |
我的问题
有一个地方需要一个非常奇怪的公式:
选项 1
在每个 "farming" sheet 中,我添加了一个公式,将所有对列连接成一个对列。
我在第 1 行第 Y 列试过这个:
=FILTER({C3:D;E3:F;G3:H;I3:J;K3:L;M3:N;O3:P;Q3:R},LEN({C3:D;E3:F;G3:H;I3:J;K3:L;M3:N;O3:P;Q3:R}))
这种方法的问题是 FILTER 只能匹配 1 列,而不是范围,所以这是行不通的。
PRO 是在角色上 sheet 我只需要在创建的范围内进行 VLOOKUP,而在农场上 sheet 我可以隐藏 Y 列和 ab 列,因此它对sheet.
选项 2:
只需要对字符 sheet 进行一次修改,这是一个 VLOOKUP,它工作正常但公式变得非常复杂,因为所有分号都引用另一个 sheet 和多个范围。
我想要一个适用于选项 1 的解决方案,所以我只需要在农业上应用一个奇怪的公式 sheet,我可以隐藏这些列,但使用它们来简化公式角色发布 sheet,恕我直言,这是一个更简洁的解决方案并且可以很好地扩展。
另一个优点是,每当我终于有了这个工作时,我想向 DFFOO 社区展示,以防他们想要使用它(这实际上是我看到的一个想法的扩展)并且有复杂的公式使其难以扩展。
如果有人能帮我想出一个解决方案,将一组不同的列合并为一个 "set of columns" 就完美了。
添加了一个 excel 期望值:https://docs.google.com/spreadsheets/d/15L5nPGfZ8OXS5Rhl3PdIVhtF7D3QzerkARskflDiJL4/edit?usp=sharing
您可以使用 QUERY
粉碎将任意数量的列合并为一列:
=TRANSPOSE(QUERY(TRANSPOSE(A:D),,999^99))
将 A、B、C 和 D 列合并为一列
然后你可以安全地将它放入 FILTER
让我们通过正则表达式说:
=FILTER(G:H, REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(A:D),,999^99)), "abc|def|xxx"))
这将过滤范围 G:H,其中任何联合列 (A:D) 至少包含 3 个可能字符串(abc 或 def 或 xxx)中的一个
更新:
={"Character", "Status";
ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(
QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(A2:H<>"",
IF(MOD(COLUMN(A2:H), 2)=0, "♠"&A2:H, "♦"&A2:H), ))
,,999^99)),,999^99)), "♦")), "♠"))}
问题背景:
我正在创建一个 Google 传播sheet 来帮助我跟踪游戏中不同角色进程的状态,称之为 DFFOO。
游戏按 crystal 颜色分割角色,我想利用这一点来简化寻找角色和了解其棋盘农场状态的任务。
这是一个例子:
Sheet IFRIT 农业
包含 IFRIT 召唤板耕作状态的当前状态,{n=none,r=奖励,m=掌握}
| Black | Status | Red | Status | ...
| Squall | m | Vanille | r |
| Noctis | n | Another | r |
Sheet SHIVA 农业
包含 SHIVA 召唤板农场状态的当前状态,{n=none,r=rewarded,m=mastered}
| Black | Status | Red | Status | ...
| Squall | r | Vanille | r |
| Noctis | n | Another | r |
Sheet 人物发布
包含有关游戏新横幅的信息,角色有一段时间可以获得双倍经验,这说明了不同面板的当前状态以及 "x2" 结束(结束提升)到帮我提前计划一下。
| Character | IFRIT | SHIVA | ... | End boosted |
| Squall | m | r | ... | 21-Oct |
| Vanille | r | r | ... | 10-Oct |
我的问题
有一个地方需要一个非常奇怪的公式:
选项 1
在每个 "farming" sheet 中,我添加了一个公式,将所有对列连接成一个对列。
我在第 1 行第 Y 列试过这个:
=FILTER({C3:D;E3:F;G3:H;I3:J;K3:L;M3:N;O3:P;Q3:R},LEN({C3:D;E3:F;G3:H;I3:J;K3:L;M3:N;O3:P;Q3:R}))
这种方法的问题是 FILTER 只能匹配 1 列,而不是范围,所以这是行不通的。
PRO 是在角色上 sheet 我只需要在创建的范围内进行 VLOOKUP,而在农场上 sheet 我可以隐藏 Y 列和 ab 列,因此它对sheet.
选项 2:
只需要对字符 sheet 进行一次修改,这是一个 VLOOKUP,它工作正常但公式变得非常复杂,因为所有分号都引用另一个 sheet 和多个范围。
我想要一个适用于选项 1 的解决方案,所以我只需要在农业上应用一个奇怪的公式 sheet,我可以隐藏这些列,但使用它们来简化公式角色发布 sheet,恕我直言,这是一个更简洁的解决方案并且可以很好地扩展。
另一个优点是,每当我终于有了这个工作时,我想向 DFFOO 社区展示,以防他们想要使用它(这实际上是我看到的一个想法的扩展)并且有复杂的公式使其难以扩展。
如果有人能帮我想出一个解决方案,将一组不同的列合并为一个 "set of columns" 就完美了。
添加了一个 excel 期望值:https://docs.google.com/spreadsheets/d/15L5nPGfZ8OXS5Rhl3PdIVhtF7D3QzerkARskflDiJL4/edit?usp=sharing
您可以使用 QUERY
粉碎将任意数量的列合并为一列:
=TRANSPOSE(QUERY(TRANSPOSE(A:D),,999^99))
将 A、B、C 和 D 列合并为一列
然后你可以安全地将它放入 FILTER
让我们通过正则表达式说:
=FILTER(G:H, REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(A:D),,999^99)), "abc|def|xxx"))
这将过滤范围 G:H,其中任何联合列 (A:D) 至少包含 3 个可能字符串(abc 或 def 或 xxx)中的一个
更新:
={"Character", "Status";
ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(
QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(A2:H<>"",
IF(MOD(COLUMN(A2:H), 2)=0, "♠"&A2:H, "♦"&A2:H), ))
,,999^99)),,999^99)), "♦")), "♠"))}