gpt4 book ai didi

vba - 根据当前工作簿中的匹配值编辑主工作簿中的单元格

转载 作者:行者123 更新时间:2023-12-04 20:57:45 24 4
gpt4 key购买 nike

此处的目标是比较两个工作簿之间“A”列中的值(当前工作簿是 .xlsm,目标工作簿是 .xlsx)。如果找到任何匹配项;在目标工作簿中更改同一行匹配值的“E”列中的值。在这种情况下,必须将工作簿分开。

我决定通过选择当前工作簿 (A2) 中的第一个值,将其值应用于变量,然后扫描目标工作簿中的“A”列以查找匹配项(应该始终至少有一个匹配项)来执行此操作。然后将目标工作簿中“E”列的值更改为那些匹配行的“DSC”。然后将当前工作簿中的选定单元格向下移动一个,并循环此过程,直到到达一个空白单元格。

这是当前的代码:

Sub DSC()
Dim RowCount As Long

secondWorkbook = "Master.xlsx"
currentWorkbook = ThisWorkbook.Name
Workbooks.Open ThisWorkbook.Path & "\" & secondWorkbook

' Define number of rows
RowCount = Workbooks("Master.xlsx").Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

' Select First Cell
Windows(currentWorkbook).Activate
Worksheets("Update Wipe").Activate
Range("A2").Select
Serial = ActiveCell.Value

Windows(secondWorkbook).Activate
Worksheets("Sheet1").Activate

' Run Function
For c = 2 To (RowCount - 1)
Windows(secondWorkbook).Activate
If Sheet1.Cells(c, 1).Value = Serial Then
Sheet1.Cells(c, 5) = "DSC"
Windows(currentWorkbook).Activate
Worksheets("Update Wipe").Activate
Selection.Offset(1, 0).Select
Serial = ActiveCell.Value
If Serial = "" Then Exit For
End If
Next c
End Sub

目前没有返回错误,但是目标工作簿中没有任何更新。它将在计算机上打开目标工作簿。来回弹跳事件工作簿和工作表以更改所选单元格并更新变量可能是原因。

最佳答案

这是一个简化的工作示例。

你会想要改变 Range("A1:A20")到您要比较的范围。

您也可以更改Sheet("Sheet1")到适当的床单。
AWorkbook.xlsm工作簿。
MasterWorkbook.xlsx工作簿。

如您所见,没有必要使用 select。

您可以使用 For 循环遍历单元格。或 For Each环形。

通过嵌套 for 循环,您可以比较单元格,但对于较大的数据集,我可能会使用 FindFindNext而不是循环通过单元格。

在这个宏中,我遍历宏工作簿中的每个单元格,并将其与目标工作簿中的每个单元格进行比较。

如果值匹配,我放置 DSC在目标工作簿中(列 E)

最后,关闭工作簿 (SaveChanges:=True)

Sub DSC()
Dim AWorkbook, MasterWorkbook, c, d, ALastRow, MLastRow
Set AWorkbook = ThisWorkbook
Set MasterWorkbook = Workbooks.Open(ThisWorkbook.Path & "\" & "MasterWorkbook.xlsx", ReadOnly:=False)
ALastRow = AWorkbook.Sheets("Sheet1").Cells(Rows.CountLarge, "A").End(xlUp).Row
MLastRow = MasterWorkbook.Sheets("Sheet1").Cells(Rows.CountLarge, "A").End(xlUp).Row
For Each c In AWorkbook.Sheets("Sheet1").Range("A2:A" & ALastRow)
For Each d In MasterWorkbook.Sheets("Sheet1").Range("A2:A" & MLastRow)
If c.Value = d.Value Then MasterWorkbook.Sheets("Sheet1").Cells(d.Row, "E").Value = "DSC"
Next d
Next c
MasterWorkbook.Close (True)
End Sub

关于vba - 根据当前工作簿中的匹配值编辑主工作簿中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43879672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com