2014-11-21 60 views
0

如何基於另一張紙上的非靜態單元格值在一張紙上製作一個下拉框!?如何根據另一張紙上的非靜態單元格值在一張紙上製作下拉框?

我想創建工作簿,可以從各種科學儀器中爲不同的參數複製CSV數據文件,並將數據放置在Sheet2上。在sheet1上,我將有幾列用於繪製我想要繪製的數據,並將圖形內置到Sheet1中。我的問題是獲取下拉列表以顯示Sheet2中複製數據的標題作爲選項。工作表2中的格式不是靜態的,因爲所有CSV文件的格式都不同。

我已經使用了下面列出的文章中的宏來根據標題拉過列。我不知道我將要工作的所有工具的所有潛在標題。我可以設置下拉框來列出Sheet2!A1:P1作爲選項的值,而不需要設置Sheet2!A1:P1作爲表格嗎? (該文件的用戶不會掌握爲CSV數據的每個複製/粘貼創建新的表格)

由於導師的潛在錯誤,我無法將Sheet2上的數據轉換爲表格即時的。 (我正在創建一個培訓計劃的練習冊,這是因爲數據的重要性,而不是一個優秀的班級,因爲教練不擅長excel)。

Excel - How populate a column from another sheet based on unique column header names

回答

0

在Excel中,創建一個名爲範圍:

  • 在Excel 2003或更低 - >插入 - >名稱 - >定義
  • 在Excel 2007和更高 - >公式 - >定義名稱

你可以命名爲任何你想要的,我會說出它像listHeaders

使用這個公式來定義它:

=Sheet2!$A$1:INDEX(Sheet2!$1:$1,,COUNTA(Sheet2!$1:$1)) 

然後在下拉列表中,用數據驗證 - >列表和設置來源爲:

=listHeaders 
0

回答我的問題。我有我的標題,我正在導入到Sheet 2.我去了Sheet 3,並有Sheet3!A1 = Sheet2!A1然後Sheet3!B1 = Sheet2!B2等我使用該範圍並創建了一個命名範圍。然後我去了Sheet1!A1,並從Sheet3上創建的命名範圍中分配了下拉菜單。我爲Sheet1!B1和Sheet1!C1做了同樣的工作。然後我添加了下面的代碼。

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 

現在,當我使用工作表Sheet1!A1降了下來,這從表Sheet 3和VBA編碼的動態列表拉拉在匹配工作表Sheet1!A1選擇在Sheet2上列中的數據。此宏允許將列拖入Sheet1的前3行,具體取決於從下拉菜單中選擇的內容。

相關問題