我必须通过完整的A列并检查单元格值长度是否为< 6然后删除它。
我曾经像这样
在纸张上执行操作 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”)?< / p>
我们是否还可以在变量的中间插入一个变量,就像我们在工作表中插入行一样?
答案 0 :(得分:4)
像这样的东西
将sheet1列的格式添加到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