Google sheet - 水平范围内字符串的动态查找函数,以获得匹配的列索引字母引用

Google sheet - Dynamic lookup function for string in an horizontal range, in order to get the matched column index letter reference

能否请您帮助检索列索引字母,其中是动态查找公式的结果? 这里我在K10中填了一个国家,然后在Data range B2:F2的单元格中查看,然后我需要相应的列字母。在我的示例中,它应该是列 B 而不是 E (在单元格 L2 或 L10 中)。我看不出我在这个论坛某处找到的公式有什么问题:

=MAJUSCULE(CAR(COLONNE(INDEX(B2:F2;EQUIV(K10;B2:F2)))+96))

这里是sheethttps://docs.google.com/spreadsheets/d/1B5t4QrSX1_cI1J66nSaHghhHBkz7CBHQKyTm-_mPhp8/edit?usp=sharing

非常感谢。

如果我正确理解你的问题,你想

将列索引转换为FRANCE.

对应的列字母

请在单元格L2

中使用以下公式
=CHAR(64+QUERY(ArrayFormula(TRANSPOSE({IFERROR(REGEXEXTRACT(B2:F2;K10));
                                       COLUMN(B2:F2)})); 
                  "select Col2 where Col1<>'' "))


更新

如何简化您的公式并将其从特定列中解放出来 (现在是这样).

仔细看看你要做什么,我相信如果你能做2个简单的修改,你会受益匪浅。

  • 在具有区域字母的国家上方添加一行
  • 将您的公式替换为以下公式

(注意更改的列。)

=QUERY(ArrayFormula(TRANSPOSE({IFERROR(REGEXEXTRACT(E3:I3;N11));
                (E2:I2)})); 
                  "select Col2 where Col1<>'' ")

您现在可以随意移动和放置您的数据。

使用的函数:

正确的方法(适用于列范围 A-ZZZ)是:

=SUBSTITUTE(ADDRESS(2; MATCH("*"&K10&"*"; A2:F2; 0); 4); 2; )


你甚至可以创造跳跃link:

=HYPERLINK("#gid=569443896&range="&
            ADDRESS(2; MATCH("*"&K10&"*"; A2:2; 0); 4); 
 SUBSTITUTE(ADDRESS(2; MATCH("*"&K10&"*"; A2:2; 0); 4); 2; ))

spreadsheet demo


或直接跳到B4:

=HYPERLINK("#gid=569443896&range="&
            ADDRESS(1+MATCH(M10; A:A; 1); MATCH("*"&K10&"*"; A2:2; 0); 4); 
 SUBSTITUTE(ADDRESS(2;                    MATCH("*"&K10&"*"; A2:2; 0); 4); 2; ))

感谢大家,我最终修改了建议的公式,以便将动态 sheet-单元格引用包裹在具有预先命名范围的动态超链接中:

=LIEN_HYPERTEXTE("#gid="&RECHERCHEV(S3;Sheets_GID;2)&"range="&ADRESSE(1+EQUIV(Q3; INDIRECT(S3&"_Poids"); 1); EQUIV("*"&M3&"*"; INDIRECT(S3&"_Zones"); 0); 4);SUBSTITUE(ADRESSE(2; EQUIV("*"&M3&"*"; INDIRECT(S3&"_Zones"); 0); 4); 2; ))

感谢 Player0 在此处找到的脚本,我得到了 sheets GID:

但是当我在 table 引用中插入一些列时它不再起作用了,我必须更正一些细节..

这里有一些代码,当你给它单元格 ID 时,它会给你行列字母(无论你把它放在 sheet 的哪个位置都有效。) 您可以将单元格 ID 放在列括号内。例如列 (B87) 或直接复制粘贴到任何地方。

=IF(TRUNC((column()-1)/26)<1;CHAR((MOD((column()-1);26))+65);CHAR(TRUNC ((列()-1)/26)+65)&CHAR((MOD((列()-1);26))+65))

希望这是有用的。疯狂干杯