簡體   English   中英

循環直到空白列

[英]Looping until blank column

我正在整理一些我認為需要循環的VBA代碼。 循環通常是我使用VBA的最大弱點,我需要一些幫助。

我有一個導入到Excel電子表格中的文本文件。 列和行的長度以及向下的長度每天都會變化。 例如,今天的文件可能在A-H列中有數據,明天的文件可能是A:P。每個典型的行數將在200個標記附近,因此不要太長。

本質上,我試圖從分布在多列中的所有數據中在A列中創建一個長長的列表。 我正在尋找一個循環,檢查該列中是否有數據,如果這樣做,則將數據復制到A列中的數據底部。因此出於說明目的,說數據出到G列,它將復制B1 ,xl向下,找到A中的第一個空行並粘貼,然后對C執行相同的操作,在G列之后停止。

我希望我在寫這篇文章時很清楚。 預先感謝馬特

您首先要遍歷所有列。 因此,從B列到LastColumn的FOR循環(具有此功能)。然后,您要遍歷該列中的所有行以查找第一個空行,然后減去其中的一個以獲取數據的最后一列。

 If Cells(row,col) = "" Then
   LastRowCopy = row -1

然后,您想將所有內容復制到A1,並跟蹤您張貼的最后一行。因此,您想要一個重要的變量。 就像是:

LastRowPaste = LastRowPaste + row

我可以為此編寫代碼,但是也許您可以自己弄清楚它,從而學到更多。

編輯:關於查找最后一行或最后一列的有趣讀物是這樣的: http : //www.rondebruin.nl/win/s9/win005.htm

Edit2:當然,您也可以使用與查找最后一行相同的方法來查找最后一列。 然后,您只需遍歷各列,看看是否:

If Cells(1, col) = "" Then
 LastCol = col -1

編輯3:

我寫出了完整的代碼:

Sub copypaste()

Dim LastRowCopy As String
Dim LastRowPaste As String
Dim LastCol As String
Dim col As Integer
Dim row As Integer

LastCol = ActiveSheet.UsedRange.Columns.Count
LastRowCopy = ActiveSheet.UsedRange.Rows.Count
LastRowPaste = ActiveSheet.UsedRange.Rows.Count

For row = 1 to LastRowPaste
    If Cells(row, 1) = "" Then
         LastRowPaste = row
         Exit For
    End if
Next row


For col = 2 To LastCol
       If Application.WorksheetFunction.CountA(Columns(col)) = 0 Then
            LastCol = col -1
       End If
Next col

For col = 2 To LastCol
    For row = 1 To LastRowCopy
        If Not Cells(row, col) = "" Then
            Cells(LastRowPaste, 1) = Cells(row, col)
            LastRowPaste = LastRowPaste + 1
        End If
    Next row
Next col


End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM