用vbs数组写一段在表格如果A列有相同日期,b列数据相同时,删除整行数据,如果A列有不同日期b列数据相同时,保留整行数据
答:下面是使用VBS数组来实现上述功能的代码:
'定义变量
Dim arrData(), arrTemp()
Dim i, j, k, lRowNum, lColNum
Dim dDate1, dDate2 '存储A列日期值的变量
'读取表格数据,并将其存入二维数组中 'lRowNum为行数,lColNum为列数
lRowNum = Range("A1").End(xlDown).Row '获取总行数
lColNum = Range("A1").End(xlToRight).Column '获取总列数 ReDim arrData(1 To lRowNum , 1 To lColNum) '定义二位动态数组arrData() For i = 1 To lRowNum For j = 1 To lColNum arrData(i , j) = Cells(i , j).Value Next j Next i
'对arrData()进行循环比较处理 ReDim arrTemp (1 to UBound (arrData)) For i=UBound (arrData)-1 to 1 Step -1 dDate1=CDate(arrData (i+1 , 1)) dDate2=CDate(arrData (i , 1)) If arrData (i+1 , 2)=arrData (i , 2) And DateDiff ("d" , dDate2,dDate1 )=0 Then Call DeleteRowsArray (arrTemp () ) Else ReDim Preserve arrTemp (UBound (arrTemp)+1 ) arrTemp(UBound (arrTemp))=i End If Next
'将处理后的文本写回Excel中For i = LBound(ArrTemp) To UBound(Arrtemp) k=Arrtemp(i)+LBound (Arrtemp)-I For J = LBound((Arrdata),J)To UBound((Arrdata),J) Cells ((K),j)= Arrdata ((K),j) Next J Next I
'定义DeleteRowsArray函数Sub DeleteRowsArray () Dim m Dim n m = Ubound Array () For n = m to LBound Array () + 1 Step - 1 Rows array n delete Next End Sub
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!