excel - VBA 从另一个带有空格的 Excel 中搜索
问题描述
我有我在我们部门调整过的代码,它可以工作。
但问题是数据库在“名称”单元格的末尾有带有空格的项目(行)。例如,每当我在“名称”列中搜索“chris”时,都会显示所有“chris”,但不会显示末尾带有空格(“chris”)的那些。
有没有一种方法可以包含所有有空格和没有空格的匹配项?数据库受到保护,因此我无法对其进行编辑并删除所有空格。
Sub Data_Search(wbMaster As Workbook, wbSlave As Workbook)
Dim ws As Worksheet
Dim dashboard As Worksheet
Dim dataArray As Variant
Dim datatoShowArray As Variant
Set dashboard = wbMaster.Sheets("Dashboard")
dataColumnStart = 1
dataColumnEnd = 15
dataColumnWidth = dataColumnEnd - dataColumnStart
dataRowStart = 2
dashboardDataColumnStart = 2
searchValue = dashboard.Range("C4").Value
fieldValue = dashboard.Range("E4").Value
If (fieldValue = "ID") Then
searchField = 1
ElseIf (fieldValue = "Name") Then
searchField = 2
End If
For Each ws In wbSlave.Worksheets
If (ws.Name <> "Dashboard") Then
dataArray = ws.Range(ws.Cells(dataRowStart, dataColumnStart), ws.Cells(ws.Cells(Rows.Count, dataColumnStart).End(xlUp).Row, dataColumnEnd)).Value
ReDim datatoShowArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2))
j = 1
For i = 1 To UBound(dataArray, 1)
If (dataArray(i, searchField) = searchValue) Then
For k = 1 To UBound(dataArray, 2)
datatoShowArray(j, k) = dataArray(i, k)
Next k
j = j + 1
End If
Next i
nextRow = dashboard.Cells(Rows.Count, dashboardDataColumnStart).End(xlUp).Row + 1
dashboard.Range(dashboard.Cells(nextRow, dashboardDataColumnStart), dashboard.Cells(nextRow + UBound(datatoShowArray, 1) - 1, dashboardDataColumnStart + dataColumnWidth)).Value = datatoShowArray
End If
解决方案
您可以使用该Trim()
函数创建项目的副本,其中包含删除前后的任何空格。
在您的情况下,更改此行
If (dataArray(i, searchField) = searchValue) Then
至
If (Trim(dataArray(i, searchField)) = searchValue) Then
推荐阅读
- java - 反序列化对象而不实现
- outlook - 在将 Outlook 联系人同步到 D365 时创建一个新帐户
- javascript - 更改超时持续时间
- java - Java子类方法覆盖父方法
- c# - Xamarin 项目未运行,未找到程序集
- javascript - How to transform a piece of text into a link?
- .net - 带有.NET 下拉菜单的按钮?
- http - 我的请求的 HTTP 状态
- python - 如何使用 QSQL 从 PYQT5 Python 中的 Sqlite3 数据库中获取 QCombo BOX 中的记录列表
- javascript - 如何在点击时在 div 之间淡入淡出,从不显示开始?