gpt4 book ai didi

vba - 在两个工作表中都有共同的列但行号不同

转载 作者:行者123 更新时间:2023-12-04 19:51:19 26 4
gpt4 key购买 nike

我在不同的 Excel 工作表中有一组数据。

两个工作表都有一个共同的列。列名:工作表1中的名称和工作表2中的名称(类))

工作表 1:列名称:

  • 姓名、类(class)、性别

工作表 2:列名:

  • 姓名(类(class))、学科、年级

我希望能够单击任何工作表中的单元格并将我定向到 sheet3,其中显示了与所选单元格相关的相关数据。例如,如果我单击工作表 1 中的某个名称,该名称和该名称的相关数据将显示在工作表 3 中。工作表 1 和工作表 2 中名称的行号不同。

代码:

DetailsUsedRange = ThisWorkbook.Sheets("Sheet1").UsedRange.Rows.Count

With ActiveCell
Name = ThisWorkbook.Sheets("Sheet1").Cells(.Row, 9)
NoName = InStr(1, "(" & ThisWorkbook.Sheets("Sheet2").Cells(.Row, 1) & ")", (Name))
MsgBox NoName
MsgBox Name
For i = DetailsUsedRows To 1 Step -1
If (NoName <> 0) Then ThisWorkbook.Sheets("Student Viewer").Cells(2, 3).Value = ThisWorkbook.Sheets("Sheet1").Cells(.Row, 1).Value
.....
end if
next i

我希望它像这样显示。但是名称(IC)阻止我获取同名和 ic 下的各种数据

最佳答案

我的想法是在具有动态范围的 vba 中使用 vlookup。

Dim i As Long, k As Long

i = Sheets("sheet2").UsedRange.Rows.Count

k = 1

With ActiveCell

Sheets("Sheet3").Range("A2") = ActiveCell & "(" & ActiveCell.Offset(0, 1) & ")"

For J = 2 To i
k = WorksheetFunction.Match(Sheets("Sheet3").Range("A2"), Sheets("sheet2").Range("A2:A9"), 0) + k
If k > i Then
Exit For
End If
Sheets("sheet3").Range("A" & J) = Sheets("Sheet3").Range("A2")
Sheets("Sheet3").Range("B" & J) = WorksheetFunction.VLookup(Sheets("sheet3").Range("A2"), Sheets("Sheet2").Range("A" & k & ":C" & i), 2, 0)
Sheets("Sheet3").Range("C" & J) = WorksheetFunction.VLookup(Sheets("sheet3").Range("A2"), Sheets("Sheet2").Range("A" & k & ":C" & i), 3, 0)
Next
End With

Sheets("sheet3").activate

您将需要更改对工作表的引用和可能使用的范围。但是我的代码是做什么的,它会占用 activecell。获取姓名和类(class),并将它们置于“姓名(类(class))”格式中,然后粘贴到 sheet3("A2") 上。然后在 sheet2 上进行 vlookup 以查找任何与该名称匹配的内容,然后在 Sheet3 的下一列中给出主题和成绩。

编辑更新代码以修复计数问题

关于vba - 在两个工作表中都有共同的列但行号不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915152/

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