我在寻求公式方面的帮助。
我需要比较两个单元格(而不是列)中的文本。
其中一个单元格有姓氏,另一个单元格可能有姓氏的一部分,并带有其他数字和字母(不按任何特定顺序)。这些是我们想要定位的对。
并非所有的单元格都匹配,但是对于部分文本匹配的单元格,会像< code >“MATCH”这样。
例如,在单元格E2=000034568MILL WALLI
和单元格J2=WALLINGERMATCH
,因为单元格E2中的WALLI与部分文本匹配。
另一个例子:
< code>E2=本杰明·P·罗阿姆巴和< code > E2 =鲁姆巴摩尔应该带回匹配。
我希望这是有意义的,并且有一个可能的公式。
如果你愿意使用VBA用户定义的函数,你可以试试这个:
单元格_匹配
它返回!Err
如果与输入值(参数)有任何不一致的错误,如果找到匹配项,则返回Match
,否则返回NO Match
(返回值可以根据需要更改)。
语法: Cells_fMatch( sCll_1, sCll_2[, 爱尔兰列伊明] )
论据
sCll_1:要比较的字符串1
sCll_2:要比较的字符串 2
iLenMin :要比较的字符串的可选最小长度。默认值为 1。数据类型 byte 接受最大值 255,如果需要更高的长度,请相应地进行更改。
该函数结合了For… Next
语句和Instr
函数来执行比较,提供快速准确的结果。
Public Function Cells_fMatch(sCll_1 As String, sCll_2 As String, Optional iLenMin As Byte = 1) As String
Dim blCllMatch As Boolean
Dim sCllVal As String
Dim i As Integer
Rem Set Default Result
Cells_fMatch = "!Err"
Rem Validate Input
If Len(sCll_1) < iLenMin Then Exit Function
If Len(sCll_2) < iLenMin Then Exit Function
Rem Compare Cell Values
For i = 1 To (1 + Len(sCll_1) - iLenMin)
sCllVal = Mid(sCll_1, i, iLenMin)
If InStr(sCll_2, sCllVal) > 0 Then
blCllMatch = True
Exit For
End If: Next
Rem Set Results
Cells_fMatch = IIf(blCllMatch, "Match", "NO MATCH")
End Function
示例:要比较单元格E2和
J2中的字符串,至少匹配5个连续字符(分别为值
000034568MILL WALLI和
WALLINGER),请使用以下公式:
=Cells_fMatch(E2,J2,5)
这些页面将进一步解释函数中使用的资源:
函数语句,暗淡语句,
如果。。。然后。。。否则声明,对于...下一条语句,函数。
Excel中没有满足您需求的内置函数。您需要在 VBA 项目模块中自定义自己的公式。所以我设法编写了一个计算匹配次数的函数。Adter将其设置为模块,您可以将其用作工作表中的普通公式。
如果你不熟悉VBA编程,不要担心。按照说明将下面的代码复制到VBA模块中。
Function CountPartialMatch(R1 As String, R2 As String, M As Long) As Long
Dim n As Long, L1 As Integer, L2 As Integer, Min As Integer, C As Integer, S1 As Integer, S2 As Integer
n = 0
L1 = Len(R1)
L2 = Len(R2)
Min = Application.WorksheetFunction.Min(L1, L2)
For C = M To Min
For S1 = 1 To (L1 - (C - 1))
For S2 = 1 To (L2 - (C - 1))
If Mid(R1, S1, C) = Mid(R2, S2, C) Then n = n + 1
Next S2
Next S1
Next C
CountPartialMatch = n
End Function
该公式需要3个参数:
=CountPartialMatch(First_Cell, Second_Cell, Min_Chrt)
参数 Min_Chrt
是匹配项必须包含的最小字符数。因此,如果您声明2,它将计算所有具有2个字符,3个字符,4,5,6...它减少了巧合的数量。如果它是1,公式将计算每个“a”= “a”,字母=字母。
请让我知道它是否适合你!
我在一个3000行的excel工作表中有一个简单的公式,有没有办法只返回一定百分比的顶部匹配单元格。我只想显示符合我条件的前 9%(270 行)并隐藏其他行 这是我的公式: 我用数据透视表做了这件事,但想在同一个表格中用同一个公式添加它以得到我需要的东西。谢谢。
我在工作表选项卡的大量行中使用INDEX/MATCH组合来定位同一工作表的另一个选项卡中的单元格值,并返回第二个工作表中另一列的内容。 索引/匹配公式 虽然这对于大多数行来说都很好,但我发现少数行不行——单元格显示“#N/A”。那些不起作用的都是寻找以“1/”开头的单元格(忽略引号)。 谁能帮我解释一下为什么会这样?
我正在使用apache POI更改excel表中的单元格。更改值后,与已更改的单元格对应的公式的单元格不会更新。 当我进入excel并单击带有公式的单元格,然后在函数栏中单击时,公式会更新。 A1仍然等于3,直到我点击那个单元格。 刷新工作簿或工作表也不起作用。这是excel或POI的问题吗?有人能想出一个变通办法吗?
我正在开发一个上传excel文件并将其值插入数据库的应用程序。 我的代码如下: 所以当我上传一个像下面这样的excel文件时,它会工作并将其数据插入db。 但是,当我上传像以下这样的excel文件时,db不会更新。 我可以问你如何解决这个问题,所以即使单元格的值是=ROUNDUP((600),2),而不是600,它仍然更新db。 提前谢谢你。
问题内容: 我必须将 算法从Excel工作表移植到python代码, 但必须对 Excel文件中的算法 进行 反向工程 。 Excel工作表非常复杂,它包含许多单元格,在这些单元格中有引用其他单元格的公式(也可以包含公式或常数)。 我的想法是使用python脚本分析工作表,以构建一种单元格之间的依存关系表,即: A1取决于B4,C5,E7公式:“ = sqrt(B4)+ C5 * E7” A2取决
目前,我有一个脚本,从一个excel表复制数据,并粘贴在SAP中的事务代码Scal。 我的代码所做的是,根据每个ID(例如AA/AB)过滤日历选择,然后将开始日期和结束日期的数据复制到scal ID中。保存更改,然后移到下一个ID。 假设我有一个excel表,同一日历ID有多个条目。如何使excel检查下一行是否与当前一行具有相同的日历ID,然后不保存,而是复制并粘贴相同ID的开始/结束日期,然后