2011-09-20 49 views
0

我必須通過完整的A列並檢查單元格值長度是否爲< 6然後將其刪除。刪除行並插入聲明爲Variant的範圍中的行

我用這樣的

activesheet.range("A" & row_number).select 
selection.entirerow.delete 

在紙張上執行的操作當人們使用一個變種我想和變種的工作建議。

我已將一組範圍變爲變體。

dim var as variant 
var=sheet1.range("A1:D1000").value 

假設我有20行,其單元值長度在A柱小於6我不得不在所述變體可變除去這些20行,包括在變體的其他對應的列即B,C,d我的意思是var(「A18:D18」)應該被完全刪除。

我聽到有人說我們不能從一個變體中刪除一個條目,我們應該採取一個新的變體,並只將這些值複製到新變體中。如果是這種情況,我如何將一個變體複製到另一個變體中?

對於A列單元格值長度大於6的行,應將單元格值轉換爲標準格式。我已經使用片狀的每一行

activesheet.cells("some cell!).value=activesheet.cells("").value 

我循環中完成它,它正在採取一段時間,因爲每次我敲了片值的時間。我想現在使用變體,取整個範圍,執行操作並將其寫回。

如何刪除我們輸入到像var(「A2:D2」)這樣的變體中的完整行,然後將var(「A4:D4」)值複製到var2(「A6:D6」)等其他變體?

我們是否也可以在變體的中間插入變體的條目,就像我們在工作表中插入行一樣?

回答

4

像這樣

  1. 它需要A1:所述第一工作表上D1000(陣列X)
  2. 測試各列的單元格,以查看它是否長於6個字符
  3. 如果大於大於6,則整行(4個細胞在你的情況)寫爲在陣列中的新 列Y
  4. 減小的陣列被寫入A1在sexcond工作表
  5. 阿迪sheet1中列d格式到Sheet2列

    Sub VarExample() 
    Dim ws1 As Worksheet 
    Dim ws2 As Worksheet 
    Set ws1 = ActiveWorkbook.Sheets(1) 
    Set ws2 = ActiveWorkbook.Sheets(2) 
    Dim X 
    Dim Y 
    Dim lngRow As Long 
    Dim lngCOl As Long 
    Dim lngCnt As Long 
    'define the size of the array to be processed on sheet 1 
    X = ws1.Range("A1:D1000").Value2 
    'make the second array the same size as the first 
    ReDim Y(1 To UBound(X, 1), 1 To UBound(X, 2)) 
    'Look at the first record in each row [,1] part to see if it is longer than 6 chars 
    For lngRow = 1 To UBound(X, 1) 
        If Len(X(lngRow, 1)) > 6 Then 
        'Longer than 6 so add 1 more row to the length of the 2nd array 
         lngCnt = lngCnt + 1 
         'Loop through value in this row of the first array and place in the second array 
         For lngCOl = 1 To UBound(X, 2) 
          Y(lngCnt, lngCOl) = X(lngRow, lngCOl) 
         Next lngCOl 
        End If 
    Next 
    'create a range on the second sheet equal in size to the second array and dump the array to it 
    ws1.[a1].Resize(UBound(Y, 1), UBound(Y, 2)).Value2 = Y 
    'copy formatting 
    ws1.[a1].Resize(1, UBound(X, 2)).EntireColumn.Copy 
    ws2.[a1].Resize(1, UBound(X, 2)).EntireColumn.PasteSpecial Paste:=xlPasteFormats 
    Application.CutCopyMode = False 
    End Sub 
    
+0

任何交代給你的代碼註釋! – niko

+0

添加評論niko按要求,請讓我知道你是否有任何進一步的疑問。歡呼聲 – brettdj

+0

謝謝! brettdj – niko