Excel中 - 找到一个值,并复制到不同的表(Excel - find a value and c

2019-10-19 10:50发布

我需要一些帮助的公式我试图做一个标书。 我有一个工作簿,用标记包含在山坳A2学生独特的参考号码“大师”的纸张,他们的名字B2 / C2然后将四个科目他们山坳D2,E2,F2和G2研究。 我还然后对每个个体对象分开的片材。

我想查找的主片材(在四列)上的对象,并且如果“数学”是受试者的学生发生在这些列中的一个,我想对应的学生姓名和参考从该行被复制并粘贴到表“数学”可以生成关于主题/学生和班级进入这样的详细信息。

我曾尝试用IF和MATCH公式工作,但它似乎变得相当复杂,因为我有400名学生,谁都有四门课,并且受试者可以在四个主题列中的任何一个出现。

有什么建议么?

TIA!

Answer 1:

有两个可能的解决方案,最简单的是:

在数学片,插入这样的:

[细胞B2]

=IF(Sheet1!D2="Math";Sheet1!B2;IF(Sheet1!E2="Math";Sheet1!B2;IF(Sheet1!F2="Math";Sheet1!B2;IF(Sheet1!G2="Math";Sheet1!B2;""))))

[小区C2]

=IF(Sheet1!D2="Math";Sheet1!C2;IF(Sheet1!E2="Math";Sheet1!C2;IF(Sheet1!F2="Math";Sheet1!C2;IF(Sheet1!G2="Math";Sheet1!B2;""))))

并把他们拖下水低谷文档...


这里是我做了一个样本测试:

学生表:

-------------
1001    Toni    Almeida     Math        Portuguese  Programming     Another
1002    David   P           Portuguese  French      Programming     Another
1003    Neil    C           Math        Portuguese  Programming     Another
1004    James   H           Portuguese  French      Programming     Another
-------------

结果(数学片):

-------------
1001    Toni    Almeida 
1002    
1003    Neil    C   
1004    
-------------

您还可以创建一个查询:

注:该作品至少在谷歌电子表格 ,我不用微软Office在Excel中进行测试。

=query(B2:G5;"select B,C where D='Math'OR E='Math' OR F='Math' OR G='Math'";1)

结果:

-------------
1001    Toni    Almeida 
1003    Neil    C   
-------------


Answer 2:

最简单的解决办法是列D2,E2,F2,G2然后复制/粘贴结果中过滤到不同的工作表。 如果你想这是autmatically做,你需要编写一个宏。 问候,

编辑:移动数据到一个名为“主”表和ALT + F11打开Visual Basic编辑器,插入>模块,选择模块和下面粘贴此代码并保存。 Alt + F8打开宏和运行ProcessList中宏时,它会自动创建你的床单。

Sub ProcessList()
Dim course As String
Dim studentID As String
Dim studentName As String
Dim studentSurname As String

Application.DisplayAlerts = False
For Each w In Worksheets
    If Not w.Name = "Main" Then
        w.Delete
    End If
Next
Application.DisplayAlerts = True

i = 0
While Not Worksheets("Main").Cells(2 + i, 1) = ""
i = i + 1
Wend
studentcount = i

For i = 0 To studentcount - 1
    studentID = Worksheets("Main").Cells(2 + i, 1).Value
    studentName = Worksheets("Main").Cells(2 + i, 2).Value
    studentSurname = Worksheets("Main").Cells(2 + i, 3).Value
    For j = 0 To 3
        course = Worksheets("Main").Cells(2 + i, 4 + j).Value
        If Not course = "" Then
        Call checkcourse(course)
        Call insertStudentData(course, studentID, studentName, studentSurname)
        End If
    Next j
Next i

End Sub

Sub checkcourse(course)
found = False
For Each w In Worksheets
    If w.Name = course Then
        found = True
    End If
Next
If found = False Then
        Worksheets.Add().Name = course
End If

End Sub

Sub insertStudentData(wsName As String, studentID, studentName, studentSurname)
i = 0
While Not Worksheets(wsName).Cells(2 + i, 1) = ""
    i = i + 1
Wend
Worksheets(wsName).Cells(2 + i, 1).Value2 = studentID
Worksheets(wsName).Cells(2 + i, 2).Value2 = studentName
Worksheets(wsName).Cells(2 + i, 3).Value2 = studentSurname
End Sub


文章来源: Excel - find a value and copy into different sheets