Excel 使用vba修剪值时类型不匹配(错误13)
我有一份来自另一家公司的数据报告。我需要使用的一个字段在每行中有大约30个额外的尾随空格(我不知道为什么)。我只需要处理一些列,所以我所做的就是一次一列地从列中选取数据,然后按照适合我分析的顺序将其放入新的工作表中。我不使用复制粘贴,我使用Excel 使用vba修剪值时类型不匹配(错误13),excel,vba,trim,type-mismatch,Excel,Vba,Trim,Type Mismatch,我有一份来自另一家公司的数据报告。我需要使用的一个字段在每行中有大约30个额外的尾随空格(我不知道为什么)。我只需要处理一些列,所以我所做的就是一次一列地从列中选取数据,然后按照适合我分析的顺序将其放入新的工作表中。我不使用复制粘贴,我使用工作表(“A”).range(“…”).value=工作表(“B”).range(“…”).value。 这可以抓取我想要的列并按我想要的顺序放置它们。重组后,我尝试了以下方法来修剪列中的单元格: Worksheets("B").R
工作表(“A”).range(“…”).value=工作表(“B”).range(“…”).value
。
这可以抓取我想要的列并按我想要的顺序放置它们。重组后,我尝试了以下方法来修剪列中的单元格:
Worksheets("B").Range("F2:F" & rw).Value = Trim(Worksheets("B").Range("F2:F" & rw).Value)
我曾尝试根据谷歌搜索调整这一行,但每次我在这里得到一个类型不匹配(错误13)。rw是我为数据所在的行数设置的变量。我做错了什么
编辑
我添加了一个循环:
myArr = Worksheets("B").Range("F2:F" & rw).Value
For i = LBound(myArr) To UBound(myArr)
myArr(i, 1) = Trim(myArr(i, 1))
Next i
Worksheets("B").Range("F2:F" & rw).Value = myArr
它现在正符合我的要求。导致类型不匹配(错误13)的原因是Trim()仅适用于字符串,但您正在尝试修剪数组 解决方案:
- 您必须循环:
选项显式
子测试范围()
常量FirstCellAddress为String=“F2”
将ws设置为工作表
设置ws=ThisWorkbook.Worksheets(“B”)
将最后一个单元格设置为范围
设置LastCell=ws.Cells(ws.Rows.Count_
ws.Range(FirstCellAddress).Column.End(xlUp)
变暗rng As范围
设置rng=ws.Range(FirstCellAddress,LastCell)
暗淡的cel As范围
对于rng.单元格中的每个单元格
单元值=修剪(单元值)
下一个细胞
端接头
次测试()
常量FirstCellAddress为String=“F2”
将ws设置为工作表
设置ws=ThisWorkbook.Worksheets(“B”)
将最后一个单元格设置为范围
设置LastCell=ws.Cells(ws.Rows.Count_
ws.Range(FirstCellAddress).Column.End(xlUp)
变暗rng As范围
设置rng=ws.Range(FirstCellAddress,LastCell)
作为变量的Dim数据
数据=平均值
我想我会坚持多久
对于i=1到uBond(数据,1)
数据(i,1)=微调(数据(i,1))
接下来我
rng.Value=数据
端接头
Trim
和应用程序。Trim
(这是工作表函数.Trim
的最新绑定版本)的工作方式不同。前者不会删除单词之间的额外空格。。。但是如果您不关心这一点,那么可以使用Application.Trim
来代替这里的Trim
。Trim()仅适用于字符串。我怀疑您的复杂表达式,工作表(“B”).Range(“F2:F”&rw).Value
,解析为非字符串的内容。建议:“分而治之”:将复杂表达式分解为更小的子变量,以确定问题的确切位置…@palsm4-是的,这是一个二维变量数组。@palsm4该列中的所有内容都是字符串。这是一堆lastname,firstname加了很多空格。这将如何产生非字符串的内容?@BrettRussellAce-因为多单元格范围的.Value
是一个二维变量数组,而Trim
将阻塞该数组。根据您的描述,尝试使用Application.Trim
。很公平-我相应地更新了我的回复。关键的一点是OP需要理解字符串数组“string”