Excel : 根据 patterns/substrings 在列中搜索

Excel : Search in column based on patterns/substrings

在我的 excel sheet (Excel-365) 中,我有 3 列,即 Table_Name、Size_MBSession_Num,如下所示。我试图在两个单独的列中列出所有这些 Table_Name(A 列)及其 Size_MB(B 列),其中 Table_Name 由 Session_Num(C 列)组成在名称末尾加上下划线 (_),例如 BAL1_98460501.

注: Table_Name 中有大约 116k 条记录,Session_Num 中有 80k 条记录,我正在使用 Excel-365.

Table_Name                     Size_MB  Session_Num
TDATASEG                       110135   98460501
SNP_SESS_TASK                  15346    240089501
BIN$yb73fGvTAPbgU4IdCBcZFA==[=12=]   875    68243501
BAL1_15882501                    248    112275501
BAL1_98460501                    176    635501
LOG_216464501                    114    28794501
EXCH_240089501                 0.375    225655501
EXCH_RATE_252682501            0.375    216464501
LOG_68243501                    0.75    467687453
CUR_DEC_112275501             0.0625    225659501
BAL_200895501                 0.5625    252682501
......................      .........   ...............
….....................      .........   ...............

预期输出:

Table_Name           Size_MB
BAL1_98460501            176
LOG_216464501            114
EXCH_240089501         0.375
EXCH_RATE_252682501    0.375
LOG_68243501            0.75
CUR_DEC_112275501     0.0625
…................    .........
…................    .........

能否请你给我一个提示,我们如何使用 excel 公式来实现这个?谢谢。

如果你有Excel-365那么可以试试下面的公式。

=FILTER(A2:B6,ISNUMBER(SEARCH("_",A2:A6)))

以上公式将过滤 table 名称字段中具有下划线 _ 的行。

如果您想要 return C 列最后一个下划线后有数字的 table 名称,并且您使用的是 Office 365,则可以尝试此公式。

=FILTER(A2:B12,COUNTIF(C2:C12,FILTERXML("<x><y>"&SUBSTITUTE(A2:A12,"_","</y><y>")&"</y></x>","//y[last()]")))

你可以试试:

E2中的公式:

=FILTER(A2:B12,COUNTIF(C2:C12,TRIM(RIGHT(SUBSTITUTE(A2:A12,"_",REPT(" ",LEN(A2:A12))),LEN(A2:A12)))),"")