1. vba 如何实现字符串的完全匹配,不是模糊匹配
Sub bj()arr = Split("LCAP,LCAPDB,ABLCAP,ACLCAPDB", ",")For i = 0 To UBound(arr) If arr(i) Like "LCAP" Then MsgBox "arr数组的第" & i + 1 & "个元素等于LCAP"NextEnd Sub F8 单步执行代码 你能更清楚的看到效果
2. Excel 求教一个用VBA模糊匹配的问题
供参考
For i = 1 To Sheet5.UsedRange.Rows.Count 'B 栏数据
Bstr = Trim(Sheet5.Range("B" & i).Value)
num = Len(Bstr)
For j = 1 To Sheet5.UsedRange.Rows.Count 'A 栏数据
astr = Trim(Sheet5.Range("A" & j).Value)
If num = 1 Then
If InStr(astr, Bstr) >= 1 Then
m = m + 1
End If
ElseIf num > 1 Then
For k = 1 To num
aaa = Mid(Bstr, k, 1)
If InStr(astr, Mid(Bstr, k, 1)) >= 1 Then
m = m + 1
End If
Next k
End If
Dim rate As Double
rate = m / num
If rate >= 0.5 Then
Sheet5.Range("C" & i).Value = Bstr
End If
Next j
Next i
3. VBA中正则表达式匹配字符串的问题
dim reg as objectset reg=createobject("vbscript.regexp")with reg .pattern="第[一二三四五六七八九十百千万零〇]+条"'自己看文本情况选择增加^$限定 .Global=trueend withif reg.test("测试文本")=true then str=reg.replace("测试文本","替换结果表达式")'替换结果中,如果需要使用后向引用,\应写为$,如$1$2.end if
4. 求教vba字符串匹配问题
按照你的描述,能想到的也就是用like 比较符或者instr 进行比较后输出到该行的后一列,
但这个还是双层嵌套循环,最多需要 20万*1000=20000万次。。,。。。。
算法上不知道能不能优化、、
Like 运算速度稍逊于 instr。至于字典,应该是不行的。。
5. VBA复合框,下拉项。要求输入框输入字符串时模糊匹配下拉项字符串并去,除所有不包含输入字符串的下拉
Dim arr
Private Sub ComboBox1_Change()
ComboBox1.DropDown
a = ComboBox1.Text
For i = ComboBox1.ListCount - 1 To 0 Step -1
If InStr(ComboBox1.List(i), a) = 0 Then
ComboBox1.RemoveItem (i)
End If
Next
If a = "" Then
ComboBox1.Visible = False
ComboBox1.Visible = True
ComboBox1.SetFocus
ComboBox1.DropDown
ComboBox1.Clear
For i = 0 To UBound(arr)
ComboBox1.AddItem arr(i)
Next
End If
End Sub
Private Sub UserForm_Initialize()
arr = Array("abc", "bnb", "hui", "ooo", "pio", "rta", "err", "qwe", "qqq", "wwe")
For i = 0 To UBound(arr)
ComboBox1.AddItem (arr(i))
Next
End Sub
6. excel vba中模糊匹配 问题 小弟不会vba代码乱写一通 求改正
instr好像用反了
第一个参数是被查找的对象,第二个参数是包含的对象
7. 如何实现字符串的模糊匹配
可以写一个程序,计算两个文本的相似度,相似度公式:输入文本中的正确文本个数/原正确文本长度,然后根据相似度判断就可以了
8. VBA中查找指定字符串的问题
'VBA 方法如下:
'在所在页内(sheet1)加个按钮,指定 Macro1
Private Sub CommandButton1_Click()
Macro1
End Sub
'模块下 Macro1 代码如下:
Sub Macro1()
For i = 1 To 65535
If Len(ActiveSheet.Cells(i, 6).Value) = 0 Then
Exit For
End If
Next i
N = i - 1 ' ******* N 为F列内元素的个数
Sheets("Sheet2").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("Sheet2").Range("F1").Select
Sheets("Sheet1").Select
M = 0
AA = "1"
BB = InputBox("请在下面的对话框内输入关键字", "关键字输入对话框", AA)
If Len(Trim(BB)) = 0 Then
MsgBox "请输入关键字 !", vbCritical, "SIR007_001提示"
Exit Sub
Else
For J = 1 To N
Sheets("Sheet1").Cells(J, 6).Select
'MsgBox Sheets("Sheet1").Cells(J, 6)
If CStr(Sheets("Sheet1").Cells(J, 6).Value) = CStr(BB) Then
CC = J & ":" & J
DD = "A" & J
Sheets("Sheet1").Rows(CC).Select
Selection.Copy
Sheets("Sheet2").Select
Sheets("Sheet2").Range(DD).Select
ActiveSheet.Paste
Range(DD).Select
Sheets("Sheet1").Select
Sheets("Sheet1").Cells(J, 6).Select
Application.CutCopyMode = False
M = M + 1
End If
Next J
Sheets("Sheet1").Cells(1, 6).Select
If M = 0 Then
MsgBox "请输入有效的关键字 ! ", vbExclamation, "SIR007_001提示"
Else
MsgBox "操作完成!本次共发现 " & M & " 个满足要求,并已经复制到“sheet2”相同位置!", vbInformation, "SIR007_001提示"
End If
End If
End Sub