VBA 代码可过滤表格及其所有列,同时键入并忽略重音符号

问题描述 投票:0回答:1

我正在学习口译,我想在同声传译时继续使用 Excel 作为我的主要工具。我已经创建了一个 FILTER 函数,并且找到了一个简单的 VBA 代码,当我键入字母并更改表格以显示结果时,它会过滤表格/术语表的一列(我使用带有链接单元格的文本框)。

我遇到的问题是,我想在打字时过滤多语言词汇表的所有列,并且需要 Excel 忽略重音符号 (ä,ü,ö,à...)。

想象一下一个简单的多列,用于不同语言的不同术语。

非常感谢任何帮助,非常感谢。

如前所述,我使用了 FILTER 函数,并且我已经能够使用它来过滤词汇表中的所有列,但是我认为我需要使用 VBA 来解决重音问题 (ä,ü,ö,à ...)同时过滤。

过滤器:

=FILTER(Glossary;ISNUMBER(SEARCH(F2;Glossar[Deutsch]))+
         ISNUMBER(SEARCH(F2;Glossary[Englisch]));"no match")

VBA:

Private Sub TextBox1_Change()
    Application.ScreenUpdating = False
    ActiveSheet.ListObjects("Glossar").Range.AutoFilter Field:=2, _
                        Criteria1:= "*" & [B2] & "*", _
                        Operator:=xlFilterValues
    Application.ScreenUpdating = True
End Sub

我知道上面的VBA代码只是搜索第二列,还无法弄清楚多列搜索。

excel vba filter excel-formula dynamic
1个回答
0
投票

这里有一些无需 VBA、使用命名函数即可尝试的方法:

Name Manager

姓名 指的是
acc_1
="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"
acc_2
="ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ"
acc_chars
=acc_1 & acc_2
reg_1
="aaaaaaaceeeeiiiienoooooouuuuypsaaaaaaaceeeeiiiienoooooouuuuypy"
reg_2
="aaaaaaccccccccddddeeeeeeeeeegggggggghhhhiiiiiiiiiijjkkkllllllllllnnnnnnnnnoooooooorrrrrrssssssssttttttuuuuuuuuuuuuwwyyyzzzzzzs"
reg_chars
=reg_1 & reg_2
acc2reg
=LAMBDA(c, IFERROR(MID(reg_chars, FIND(c, acc_chars), 1), NA()))
所有2reg
=LAMBDA(term, MAP(term, LAMBDA(term, REDUCE(term, MID(term, SEQUENCE(LEN(term)), 1), LAMBDA(acc,cur, IF(ISNA(acc2reg(cur)), acc, SUBSTITUTE(acc, cur, acc2reg(cur))))))))

然后

all2reg
可以在工作簿中的任何位置使用 - 例如:

=FILTER(
    Glossary;
    ISNUMBER(SEARCH(all2reg(F2); all2reg(Glossar[Deutsch]))) +
        ISNUMBER(SEARCH(all2reg(F2); all2reg(Glossary[Englisch])));
    "no match"
)

Example

  • 如果您的列表又长又多,按照 chris neilsen 的建议添加辅助列可能会提高性能。
© www.soinside.com 2019 - 2024. All rights reserved.