2014-02-26 36 views
1

我需要一些幫助的公式我試圖做一個標書。 我有一個工作簿,用標記包含在山坳A2學生獨特的參考號碼「大師」的紙張,他們的名字B2/C2然後將四個科目他們山坳D2,E2,F2和G2研究。然後,我還爲每個單獨的科目分別製作單。Excel中 - 找到一個值,並複製到不同的片

我想查看主表(四欄)的主題,如果「數學」是一個學生需要在其中一列的主題,我想相應的學生名稱和參考從那行被複制並粘貼到「數學」表中,以便可以輸入關於該主題/學生和課程的進一步信息。

我試圖用IF和MATCH公式工作,但它似乎變得相當複雜,因爲我有400名學生,誰都有四門課,並且受試者可以在四個主題列中的任何一個出現。

有什麼建議嗎?

TIA!

回答

2

最簡單的解決方案將是列D2,E2,F2,G2然後複製/粘貼結果篩選出不同的工作表。 如果您希望自動執行此操作,則需要編寫一個宏。 Regards,

編輯:將您的數據移動到名爲「Main」和alt + F11的表格中,打開Visual Basic編輯器,插入>模塊,選擇模塊並粘貼下面的代碼並保存。 alt + F8打開宏並運行ProcessList Macro,它會自動創建你的工作表。

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 
+0

是的,我確實需要它來自動完成,因此,如果一個新的學生行設置的科目增加,那麼這將他們的名字複製到相應的科目表。我之前沒有真正使用宏,設置起來會不會很複雜? – Bryony309

+0

我已編輯它。這應該自動創建你的工作表。 –

+0

這太神奇了!它發現了一個錯誤,雖然「下一個 如果找到= False然後 Worksheets.Add()。Name = course End If」 – Bryony309

3

有兩種可能的解決方案,最簡單的是:

在數學片,插入此:

[細胞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 
------------- 
+0

如果將此公式輸入到數學表格中,則公式要查看的數學表格中的單元格d2中沒有數據,則單元格爲空。我應該將它輸入到主表單上嗎? – Bryony309

+0

其實,所有的參考文獻'B2','C2','D2','E2','F2','G2' ...都是第一張表格,即學生表格。 –

+0

我編輯了答案... –

相關問題