帮我写一段vba代码:统计同一行内A列和D列中相同的字符数量,把数量列在H列,同时把相同的部分显示在I列;然后用I列的字符数量除以A列的字符数量,把结果列在J列
时间: 2024-05-10 19:19:07 浏览: 128
以下是您需要的VBA代码:
```vb
Sub countChars()
Dim lastRow As Long
Dim i As Long, j As Long, k As Long
Dim str1 As String, str2 As String, commonStr As String
lastRow = Cells(Rows.Count, "A").End(xlUp).Row ' 获取最后一行的行号
For i = 1 To lastRow ' 遍历每一行
str1 = Cells(i, "A").Value ' 获取A列的字符串
str2 = Cells(i, "D").Value ' 获取D列的字符串
commonStr = "" ' 初始化相同的部分为空字符串
j = 1 ' 初始化相同字符的数量为0
For k = 1 To Len(str1) ' 遍历A列的每一个字符
If InStr(str2, Mid(str1, k, 1)) > 0 Then ' 判断该字符是否在D列中出现
j = j + 1 ' 相同字符的数量加1
commonStr = commonStr & Mid(str1, k, 1) ' 将该字符添加到相同的部分中
End If
Next k
' 将相同字符的数量和相同的部分分别写入H列和I列
Cells(i, "H").Value = j
Cells(i, "I").Value = commonStr
' 计算J列的结果
If Len(str1) > 0 Then
Cells(i, "J").Value = Len(commonStr) / Len(str1)
Else
Cells(i, "J").Value = 0
End If
Next i
End Sub
```
您可以将此代码复制粘贴到VBA编辑器中(按`Alt+F11`打开)的模块中。然后,在Excel中选择要处理的数据所在的工作表,并运行此代码。结果将会写入到H、I、J列中。
阅读全文