停留在删除存储在变体数据types中的logging

好吧,我已经试过这些,并掌握了一些变体的观点,我写了这些代码

Sub main() Dim Vary As Variant Vary = Sheet1.Range("A1:D11").Value For i = 1 To UBound(Vary) For j = i + 1 To UBound(Vary) If Vary(i, 1) = Vary(j, 1) Then 'I should delete the vary(j,1) element from vary 'in excel sheet we use selection.entirerow.delete End If Next j Next i End Sub 

这是我试过的例子

  ABCD 1 somevalues in BCD columns 2 3 1 

现在删除第四行不认为我正在为独特的logging工作我只是学习的东西要做,而当我正在学习变体,我卡在这一点删除存储在变体中的完整行

我在variables中存储了(A1:D11).value

现在如何删除A6元素或行中的变体,以便我可以避免它,而我将该变体复制到其他工作表?

我是否也可以删除C和B列的变体,以便当我转置它不会复制C和B列?

我不知道一个变体是什么 – 我正在考虑采取一系列的范围,像我们为Excel工作表所做的那样进行操作,然后采用该变体并将其转换回工作表。

这是正确的思维方式还是误解了变体的使用?

 `variant(k,1)=text(x)` some array shows mismatch ? whats wrong? 

如果您打算使用varray来查看每行中的单元格以决定是否应该删除该行,则应该向后循环varray,就像在循环遍历单元格区域时一样。 由于你从第一行开始,variablesi将总是等于元素所在的行号,所以你可以用它来删除正确的行。

下面是一个示例(比你想要做的更简单),它将删除列A和B中的单元格相同的每一行。

 Sub test() Dim varray As Variant varray = Range("A1:B11").Value For i = UBound(varray, 1) To 1 Step -1 If varray(i, 1) = varray(i, 2) Then Cells(i, 1).EntireRow.Delete End If Next End Sub 

注意事项:

  • UBound(varray,1)给出了行数
  • UBound(varray,2)给出了列的计数

一个没有第二个数组的解决方法是在你想要replace的元素中引入一个故意的错误,然后使用SpecialCells在将variables数组转储回范围之后删除单元。 这个例子在A6对应的数组位置(例如循环外部)引入一个错误,然后当范围被转储到E1时,SpecialCell错误消除将F6:H6移到E6:G6。 即

请在testing之前保存 – 此代码将覆盖第一个工作表中的E6:H11

  Sub main() Dim Vary As Variant Dim rng1 As Range Set rng1 = Sheets(1).Range("A1:D11") Set rng2 = rng1.Offset(0, 4) Vary = rng1.Value2 For i = 1 To UBound(Vary) For j = i + 1 To UBound(Vary) 'your test here Next j Next i Vary(6, 1) = "=(1 / 0)" With rng2 .Value2 = Vary On Error Resume Next .SpecialCells(xlFormulas, xlErrors).Delete xlToLeft End With End Sub