我必须遍历完整的A列并检查单元格值长度是否为<6 .
我过去常常在表单上执行这样的操作
activesheet.range("A" & row_number).select
selection.entirerow.delete
当人们建议使用变体时,我想使用变体。
我把一组range变成了一个变量。
dim var as variant
var=sheet1.range("A1:D1000").value
假设A列中有20行单元格值长度小于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")?
我们是否也可以在变体的中间插入一个条目,就像我们在工作表中插入一行一样?
像这样
- 在第一个工作表(数组X)上占用A1:D1000
- 测试每个列A单元格是否大于6个字符
- 如果它大于6,那么整个行(在您的情况下为4个单元格)被写为在数组Y中添加新行
- 在第二个工作表 中,简化数组被写入A1。
添加了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