excel - 用宏比较两个excel文件
问题描述
我需要比较两个excel文件。我有第 S-1 周的数据,我需要知道在下周 S1 中我的数据发生了什么变化。
我的数据与称为“代码功能”的分组
对于每个“代码功能”,我需要知道转换是什么(修改、添加的行或删除的行)。
我试图制作一个代码,我使用逻辑来比较每行的行,并且我设定了“代码功能”在比较的行中必须相同的条件。但是代码没有给我想要的结果。
Option Explicit
Private Sub CommandButton1_Click()
Dim strRepFicA As String, strRepFicB As String
Dim wbFicA As Workbook, wbFicB As Workbook, wbFicAna As Workbook
Dim wsFicA As Worksheet, wsFicB As Worksheet, wsFicAna As Worksheet
Dim lgLig As Long, lgCol As Long
Dim lgLigDeb As Long
' Répertoire et Fichier
strRepFicA = ThisWorkbook.Path & "\" & "S-1.xlsx"
strRepFicB = ThisWorkbook.Path & "\" & "S1.xlsx"
' Classeur d'analyse
Set wbFicAna = ThisWorkbook
Set wsFicAna = wbFicAna.ActiveSheet
' Vérifier que les fichiers A et B se trouvent dans le répertoire
If Dir(strRepFicA) = "" Or Dir(strRepFicB) = "" Then
MsgBox "Le fichier A et/ou le fichier B sont introuvables", vbCritical + vbOKOnly, "Problème de fichiers..."
Exit Sub
End If
Application.ScreenUpdating = False
' Ouverture du fichier A et définition de la feuille de traitement
Set wbFicA = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "S-1.xlsx")
Set wsFicA = wbFicA.Worksheets("Sheet1")
' Ouverture du fichier B et définition de la feuille de traitement
Set wbFicB = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "S1.xlsx")
Set wsFicB = wbFicB.Worksheets("Sheet1")
' Vider les lignes du fichier d'analyse
wsFicAna.Range("A2:U" & Cells.Rows.Count).ClearContents
' Première ligne d'affichage des résultats dans le fichier d'analyse
lgLigDeb = 2
' Traitement des lignes des 2 fichiers
' Lignes : 2 à 1250
For lgLig = 2 To 7000
' Colonnes : D à AO
' Une différence est trouvée dans une ligne
'wsFicA.Cells(lgLig, lgCol).Value <> wsFicB.Cells(lgLig, lgCol).Value
If wsFicA.Cells(lgLig, 9).Value <> wsFicB.Cells(lgLig, 9).Value And wsFicA.Cells(lgLig, 5).Value = wsFicB.Cells(lgLig, 5).Value Then
' Affichage du nom du fichier en colonne A
wsFicAna.Range("A" & lgLigDeb).Value = wbFicA.Name
' Copier la ligne du fichier A dans le fichier d'analyse
wsFicA.Range("B" & lgLig & ":" & "U" & lgLig).Copy _
Destination:=wsFicAna.Range("B" & lgLigDeb)
' Affichage du nom du fichier en colonne A
wsFicAna.Range("A" & lgLigDeb + 1).Value = wbFicB.Name
' Copier la ligne du fichier B dans le fichier d'analyse
wsFicB.Range("B" & lgLig & ":" & "U" & lgLig).Copy _
Destination:=wsFicAna.Range("B" & lgLigDeb + 1)
lgLigDeb = lgLigDeb + 2
End If
Next lgLig
' Fermer les fichiers A et B
wbFicA.Close savechanges:=False
wbFicB.Close savechanges:=False
MsgBox "Traitement terminé"
Application.ScreenUpdating = True
End Sub
解决方案
推荐阅读
- c# - 如何从 AuthorizeAttribute 自定义类的 HttpActionContext 获取 cookie?
- java - 如何在 SolrJ 中的查询中设置集合
- vba - 如何制作按钮以在excel中创建具有新日期的新工作表
- sass - Sass : 根据@media 设置 $vars
- openssh - 当我尝试 ssh 时如何解决“找不到匹配的 mac 错误”
- android - 在我的项目中正确实现模块库是愚蠢的
- tensorflow - 升级到 tensorflow-gpu 1.9 后的 CUDNN_STATUS_INTERNAL_ERROR
- google-tag-manager - 如何从确认页面上的另一个像素中捕获 GTM 中的变量?
- apache - 同一网站的不同虚拟主机但页面不同
- android - Android - 在 HttpsURLConnection 中传递 OAuth1