2014-07-23 60 views
1

我已经在脚本中比较两个excel数据,并将匹配数据写入第三个excel。脚本完美工作,并将匹配数据写入第三个excel。问题是它会为不匹配的数据创建一个空行。不知道如何删除空行或如何防止它写入空的数据。如何使用VB脚本删除/删除excel中的空白行

  • 在第一工作簿"C:\Excelone.xls",该列的值是1,2,3,4,5,6
  • 在第二工作簿"C:\Exceltwo.xls",该列的值是1 ,AB, 3,AC,5,6-
  • 所以比较之后,在第三Excel中workobook(列A)的输出被写为1,空,3,空,5,6-

我需要d输出是1,3,5,6

请帮我解决问题。请找到下面的脚本

  Set myxl = createobject("excel.application") 
      myxl.Workbooks.Open "C:\Excelone.xls" 
      myxl.Application.Visible = true 
      set mysheet = myxl.ActiveWorkbook.Worksheets("Sheet1") 
      Set myx2 = createobject("excel.application") 
      myx2.Workbooks.Open "C:\Exceltwo.xls" 
      myx2.Application.Visible = true 
      set mysheet1 = myx2.ActiveWorkbook.Worksheets("Sheet1") 
      Set myx3 = createobject("excel.application") 
      myx3.Workbooks.Open "C:\Excelthree.xls" 
      myx3.Application.Visible = true 
      set mysheet3 = myx3.ActiveWorkbook.Worksheets("Sheet1") 
      row=0 

      'With mysheet.UsedRange 
       For each search_data in mysheet.UsedRange 
       row = row+1 
        For each search_data1 in mysheet1.UsedRange 
          If search_data=search_data1 Then 

            mysheet3.cells(row,1).value=search_data1 

           Exit For 
          End If 
        Next 
       Next   
      'End With 

      myxl.ActiveWorkbook.Save 
      myxl.ActiveWorkbook.Close 
      myxl.Application.Quit 
      Set mysheet =nothing 
      Set myxl = nothing 

回答

0

请尝试移动计数器(row = row+1)环路,那里是一个成功的比赛里,即

For each search_data in mysheet.UsedRange 
'row = row+1    
    For each search_data1 in mysheet1.UsedRange 
      If search_data=search_data1 Then 
        row = row+1 
        mysheet3.cells(row,1).value=search_data1 
        Exit For 
      End If 
    Next 
Next  
+0

谢谢你,它的工作的。我觉得,我的编码很糟糕。这么简单的逻辑。 – Visitjaga