选择要搜索字符串的行,返回整列并将其复制到其他工作表

时间:2015-07-13 00:47:04

标签: excel vba excel-vba

我面临一个问题,例如通过row7进行循环并返回Row(我知道,它的7)+ Column并复制整列。

假设我需要在第7行找到“DG”,我曾经这样搜索过:

Dim Found As Range, LastRow As Long
Set Found = Rows(7).Find(What:=value1, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Found Is Nothing Then
            firstAddress = Found.Address
            MsgBox "found" & firstAddress
        Do

    LastRow = Cells(Rows.Count, Found.Column).End(xlUp).Row

然后用SwitchCase硬编码:|将列返回到复制...

我无法发布整个代码因为它的开关从A到Z.代码可以工作,但不清楚:(我需要它动态。

目标: 指定该行,然后仅在每行上搜索一行值。如果找到,将整个列复制到另一个工作表,然后再次循环(类似.nextRight或其他东西,我知道它的参数)从找到值的列(如第7行,第5列或第E行)到右边的值我正在寻找直到该行上找不到的价值了。复制的列应该一个接一个地放置。

我曾经这样编码:

Set Found = .FindNext(Found)
        Loop While Not Found Is Nothing And Found.Address <> firstAddress

//用于循环

Set destination = Sheets("Sheet1")
    emptyColumn = destination.Cells(7, destination.Columns.Count).End(xlToLeft).Column + 1
    MsgBox "empty coloana" & emptyColumn

    If emptyColumn > 1 Then
        emptyColumn = emptyColumn
    End If

//找到整列发现的路径放在另一张表上。这段代码运作良好......它始终以B列开头,然后是C,D等等......但为什么aint从A列开始?

1 个答案:

答案 0 :(得分:0)

我不确定为什么它从一开始就开始,但是如果你正在查看工作表中的每个单元格,为什么只要遍历每个单元格就遍历每一行?这非常快,应该按照你想要的方式运行。

Sub main()
    For Each cell In ActiveSheet.UsedRange.Cells
        If cell <> "" Then
            MsgBox (cell.Row & ":" & cell.Column)
        End If
    Next
End Sub

我提供了MsgBox来显示可以从ActiveSheet.UsedRange.Cells对象中提取的行/列详细信息。