2017-10-16 34 views
0

我想要對角地穿過矩陣中的最後一行對角地清除矩陣中的內容。清除對角線上的一半矩陣的內容

但我似乎無法得到宏觀清除內容到最後一行中的每一列,因爲我將單元格引用,縱向和橫向斜

幫助表示讚賞。

Sub Tidy_Matrix() 
Dim wb As Workbook 
Dim ws5 As Worksheet 
Dim Lastrow As Long 

Set wb = ThisWorkbook 
Set ws5 = wb.Sheets(5) 

Lastrow = ws5.Range("A" & Rows.Count).End(xlUp).Row 

Dim i As Long 
Dim j As Long 
'column 
For i = 2 To Lastrow 
'row 
j = i - 1 To Lastrow 
    ws5.Cells(j, i).ClearContents 
Next i 

End Sub 

回答

0

我想你只需要添加內部循環的一個迭代:

For i = 2 To Lastrow 
    j = (i - 1) To (Lastrow + 1) 
     ws5.Cells(j, i).ClearContents 
    Next j 
Next i 
+0

需要清除色譜柱的內容物,但需要通過雙向色譜儀 - 如上述矩陣的一半。 – Neb967

+0

因此,當它穿過diagaonally我想它清除細胞到最後一排,因爲它掃過列 – Neb967

+0

好吧,我明白了。請參閱編輯:) –

0

,如果你想刪除的對角線項和下面的所有條款,它應該是

Sub Tidy_Matrix() 
Dim Lastrow As Long 

Lastrow = Range("A" & Rows.Count).End(xlUp).Row 


Dim i As Long 
Dim j As Long 

For i = 1 To Lastrow 
For j = i To Lastrow 
Cells(j, i).ClearContents 
Next j 
Next i 

End Sub 
0

您不需要兩個循環,只需一個即可完成此操作

Sub Tidy_Matrix() 
    Dim wb As Workbook 
    Dim ws5 As Worksheet 

    Set wb = ThisWorkbook 
    Set ws5 = wb.Sheets(5) 

    With ws5 
     For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row 
      With .Cells(i, 1) 
       Range(.Offset(0, 0), .Offset(0, j)).ClearContents 
       j = j + 1 
      End With 
     Next i 
    End With 
End Sub 
+0

正是我想要的!謝謝 !!! – Neb967