excel - 当我在列中提取具有相同名称的数据并将它们放入不同的工作表时,如何解决“程序无响应错误”?
问题描述
根据我之前发布的主题,我如何提取合并数据并将它们放入不同的工作表中?一切似乎都很好,直到我的程序遇到
“程序没有响应错误”
我认为这是由于使用
Sheets(sheetname).UsedRange.Rows.count
(因为删除和清除行)导致这种情况发生。基于其他线程讨论,我尝试改用它
Cells(Sheets("SheetName").Rows.Count, 1).End(xlup).Row
(其他人建议的更好的选择)但它没有给我想要的结果,如下所示。那么在这种情况下如何修改我的下面的代码来解决程序没有响应的错误,并且仍然得到如下所示的理想场景呢?
将提取的数据放入 3 个不同的工作表中,即索引 1、索引 2 和索引 3,如下所示
Sub UpdateVal()
Static count As Long
Dim iRow As Long
Dim aRow As Long
Dim a As Long
Dim b As Long
Dim selectRange As Range
dim lastline as integer
dim sheetname as string
dim indexrowcount as integer
dim wb as workbook
dim ws as worksheet
set wb= activeworkbook
set ws=wb.sheets(Index)
j = 2
iRow = 1
LastLine = ActiveSheet.UsedRange.Rows.count
While iRow < LastLine + 1
a = iRow + 1
b = iRow + 17 ' Max Group Size with Same name in F to H column
count = 1
If ws.Cells(iRow, "F").Value = "Martin1" Then
sheetname = "Index1"
ElseIf ws.Cells(iRow, "F").Value = "John1" Then
sheetname = "Index2"
Else
sheetname = "Index3"
End If
For aRow = a To b
If ws.Cells(iRow, "F") = ws.Cells(aRow, "F") And ws.Cells(iRow, "G") = ws.Cells(aRow, "G") And ws.Cells(iRow, "H") = ws.Cells(aRow, "H") Then
count = count + 1
Else
Set selectRange = Range("A" & iRow & ":J" & aRow - 1)
selectRange.Copy
indexrowcount = Sheets(sheetname).UsedRange.Rows.count
Sheets(sheetname).Range("A" & indexrowcount).PasteSpecial xlPasteAll
iRow = iRow + count
Exit For
End If
Next aRow
Wend
解决方案
我的猜测是您的Implicit
工作表引用可能是罪魁祸首。正如我在评论中提到的,Implicit
引用将引用当前活动的工作表,或ActiveSheet
.
看看这篇文章如何避免这种情况。当你研究那个帖子时,你应该有一个Worksheet
变量,例如ws
参考。
现在,例如,If Cells(iRow, "F") = Cells(aRow, "F") And Cells(iRow, "G") = Cells(aRow, "G") And Cells(iRow, "H") = Cells(aRow, "H") Then
可以TRUE
在ActiveSheet
所有空单元格的任何单元格上。这样你就永远不会击中FALSE
并且iRow
永远不会增加 >无限循环>你的错误!
推荐阅读
- google-cloud-firestore - 删除用户时撤销 Firebase 身份验证并退出
- firefox - 如何调试 CSP(包括 CSP 缓存)
- bash - Bash:解析shell命令字符串
- django - Django:如何删除结尾“?” 从网址
- javascript - 错误 :: 无效的挂钩调用。Hooks 只能在函数组件的主体内部调用
- javascript - 如何将数据动态上传到活动量表中?
- azure - 当我将数据从 Azure IoT 中心发送到 Azure 数据库时出现“OutputDataConversionError.TypeConversionError”
- linux - 在提交到发布分支或在 BitBucket 中创建发布分支时触发 Linux 脚本
- microservices - 带授权服务器的 Spring Cloud Gateway
- node.js - 如果您在 nodejs 中有一些多值,如何读取 Excel 文件