zoukankan      html  css  js  c++  java
  • How to compare two worksheets in a workoo

    比较两个Sheets的内容,这是很一个很常见的功能,在项目中遇到了这个需求,比较两个sheet,将这个区别明显高亮出来,特地将代码整理出来,方便交流使用。

    这个方案还是有一些缺陷的,假设前提便是sheet里没有重复的值。稍后也会再来一篇博客, 根据一个sheet里的值修改另一个sheet里的对应值,这两篇在日常工作中还是很常用的。

    这个处理思路是先在sheet2里遍历sheet1的值,不管是否存在都写到sheet3里,但sheet2不存在的值会高亮背景色为蓝色,接着在sheet3里查找sheet2的值,之所以在sheet3里查找,是因为,第一次操作后sheet3和sheet1的文本内容已经是一样的了,此时sheet2里存在sheet3里查找不到的值就会写在sheet3了。代码很粗糙,但功能已经完成了。

    Sub Button1_Click()
    
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Newsheet"
    CompareSheet1_2
    Comparesheet2_3
    
    End Sub
    ' compare sheet1 and sheet2 , the rows in sheet1 but not in sheet2 will be added into the newsheet and colored blue
    Sub CompareSheet1_2()
    Dim strRan As String
    RowCount1 = ActiveWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count
    RowCount2 = ActiveWorkbook.Worksheets("Sheet2").UsedRange.Rows.Count
    For i = 1 To RowCount1
    cellvalue1 = ActiveWorkbook.Worksheets("sheet1").Cells(i, 2).Value
    For j = 1 To RowCount2
    cellvalue2 = ActiveWorkbook.Worksheets("Sheet2").Cells(j, 2).Value
    strRan = "A" & i & ":C" & i
    Sheets(3).Range("A" & i & ":C" & i).Value = ActiveWorkbook.Worksheets("Sheet1").Range(strRan).Value
    If cellvalue1 = cellvalue2 Then
    Sheets(3).Range("A" & i & ":C" & i).Value = ActiveWorkbook.Worksheets("Sheet1").Range(strRan).Value
    Sheets(3).Range("A" & i & ":C" & i).Interior.ColorIndex = 0
    Exit For
    Else
    Sheets(3).Range("A" & i & ":C" & i).Interior.ColorIndex = 37
    End If
    Next j
    Next i
    End Sub
    
    ' compare sheet2 and sheet3 , the rows in sheet2 but not in sheet1 will be added into the newsheet and colored yellow
    Sub Comparesheet2_3()
    Dim strRan As String
    RowCount2 = ActiveWorkbook.Worksheets("Sheet2").UsedRange.Rows.Count
    rowcount3 = ActiveWorkbook.Sheets("NewSheet").UsedRange.Rows.Count
    n = rowcount3
    For i = 1 To RowCount2
    cellvalue2 = ActiveWorkbook.Worksheets("sheet2").Cells(i, 2).Value
    For j = 1 To rowcount3
    cellvalue3 = ActiveWorkbook.Worksheets("NewSheet").Cells(j, 2).Value
    If cellvalue2 = cellvalue3 Then
    flag = True
    Exit For
    Else
    flag = False
    End If
    Next j
    If flag = True Then
    Sheets(3).Range("A" & n & ":C" & n).Interior.ColorIndex = 0
    Else
    n = n + 1
    strRan = "A" & i & ":C" & i
    Sheets(3).Range("A" & n & ":C" & n).Interior.ColorIndex = 6
    Sheets(3).Range("A" & n & ":C" & n).Value = ActiveWorkbook.Worksheets("sheet2").Range(strRan).Value
    Exit For
    End If
    Next i
    End Sub
    

      

  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/huangll/p/4539720.html
Copyright © 2011-2022 走看看