2013-12-16 23 views
1

這不是很難,但我不知道該怎麼做。Excel - 如何根據唯一的列標題名稱填充另一個工作表中的列

我有即3空列表1中,頂行是在板料2存在於表2.

在每個頭50的如50個特有的標題名稱的數據驗證下拉列表有一個未知數據的行數。

從每個3下拉菜單的在表1,我只是想填充所有數據列列標題下在片2

是否有一個VBA溶液?

+0

是有可能使用'Worksheet_Change'和'.Find' –

回答

1

在工作表2的50個標題中的每一個標題下,都有未知數量的數據行。

我總是喜歡在公式然而VBA如果您有unknown的行數和50頭,然後我個人絕不會選擇在公式。特別是如果我不得不拖下來。這是一個VBA解決方案。

比方說,你的Sheet2中看起來像這樣

enter image description here

Sheet1工作表的代碼區粘貼此。

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    If Target.Cells.CountLarge > 1 Then Exit Sub 

    Dim wsI As Worksheet, wsO As Worksheet 
    Dim lRow As Long, nCol As Long 
    Dim sSrch As String 
    Dim aCell As Range, rng As Range 

    Set wsI = ThisWorkbook.Sheets("Sheet2") 
    Set wsO = ThisWorkbook.Sheets("Sheet1") 

    Application.EnableEvents = False 

    If Not Intersect(Target, Range("A1:C1")) Is Nothing Then 
     sSrch = Cells(1, Target.Column).Value 

     Set aCell = wsI.Rows(1).Find(What:=sSrch, LookIn:=xlValues, _ 
     LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False) 

     If Not aCell Is Nothing Then 
      nCol = aCell.Column 

      lRow = wsI.Cells(wsI.Rows.Count, nCol).End(xlUp).Row 

      Set rng = wsI.Range(wsI.Cells(2, nCol), wsI.Cells(lRow, nCol)) 
     End If 

     If Not rng Is Nothing Then 
      Range(Cells(2, Target.Column), Cells(Rows.Count, Target.Column)).ClearContents 
      rng.Copy Cells(2, Target.Column) 
     End If 
    End If 

Letscontinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume Letscontinue 
End Sub 

輸出

enter image description here

2

你不需要VBA爲,只使用INDEX和MATCH,與ROW()

在Sheet1的單元格A2例如(如果你對這個頭是在單元格A1)

=IF(INDEX(Sheet2!$A:$M,ROW(),MATCH(Sheet3!A$1,Sheet2!$A$1:$M$1,0))=0,"",INDEX(Sheet2!$A:$M,ROW(),MATCH(Sheet3!B$1,Sheet2!$A$1:$M$1,0))) 

你需要調整參考,但你會明白。 您也可以使用數據透視表...

+0

是什麼表3爲? – AlexS

+0

這部分工作。如何確保Sheet2中的所有行都顯示在Sheet1中? – AlexS

+0

我是在Sheet3而不是Sheet1中做的(我的不好)。 有什麼問題? 您只需將該公式拖放到列中足夠低的位置即可。 (或者像我說的那樣使用數據透視表)。 –

相關問題