簡體   English   中英

根據另一個電子表格中的選定數據顯示電子表格中的數據

[英]Show data from a spreadsheet according to the selected data in another spreadsheet

可能這個問題很新秀,但並不是真的習慣用Excel玩很多東西,無論如何我都去了。

我有2個電子表格:A和B.

在電子表格“A”中有以下信息:

+----------+--------+-------+------+
|   DATE   |  CODE  | CORRL | CAPA |
+----------+--------+-------+------+
| 01/03/17 | 110104 |     5 |   28 |
| 01/03/17 | 110104 |     7 |   30 |
| 01/03/17 | 810107 |     5 |   30 |
+----------+--------+-------+------+

並在電子表格“B”中提供以下信息:

+----------+--------+-------+--------+
|   DATE   |  CODE  | CORRL |   SN   |
+----------+--------+-------+--------+
| 01/03/17 | 110104 |     5 | 182694 |
| 01/03/17 | 110104 |     5 | 571394 |
| 01/03/17 | 110104 |     7 | 298435 |
| 01/03/17 | 110104 |     7 | 205785 |
| 01/03/17 | 810107 |     5 | 234519 |
| 01/03/17 | 810107 |     5 | 229787 |
+----------+--------+-------+--------+

所以我需要的是當我瀏覽電子表格“A”的記錄時,只顯示電子表格“B”中具有相同DATE,CODE和CORRL值的記錄

示例:如果我位於電子表格“B”中電子表格“A”的第一行,則只顯示前兩個記錄,即:

+-----------+---------+--------+--------+
|   DATE    |  CODE   | CORRL  |   SN   |
+-----------+---------+--------+--------+
| 01/03/17  | 110104  |     5  | 182694 |
| 01/03/17  | 110104  |     5  | 571394 |
+-----------+---------+--------+--------+

等等

謝謝

我不得不說,這是我在Excel功能中看到的更不同的請求之一。

我想我有東西給你。

首先,如果您不熟悉VBA編輯器,則可以按Alt + F11訪問它。 另一種訪問方式是從功能區中的“ 開發人員”選項卡,默認情況下隱藏。 要取消隱藏,請更改功能區以包含它。

Developer Tab

從那里,您可以訪問VBA編輯器以及運行宏。

VBA編輯器

從那里,添加以下代碼......

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim lngRow As Long, lngCol As Long, strDate As String, strCode As String, strCorrl As String
    Dim strKey As String, strSlaveKey As String, i As Long

    If objSlaveSheet Is Nothing Then Exit Sub

    objSlaveSheet.Rows.EntireRow.Hidden = True
    objSlaveSheet.Rows(1).Hidden = False

    If Target.Cells(1, 1).Row > 1 Then
        With Target.Worksheet
            strDate = .Cells(Target.Row, 1)
            strCode = .Cells(Target.Row, 2)
            strCorrl = .Cells(Target.Row, 3)

            strKey = strDate & "_" & strCode & "_" & strCorrl
        End With

        ' Now loop through all of the cells in the slave workbook.
        ' Start at the second row because the first has a header.
        With objSlaveSheet
            For lngRow = 2 To .Rows.Count
                strSlaveKey = ""

                For i = 1 To 3
                    strSlaveKey = strSlaveKey & "_" & .Cells(lngRow, i)
                Next

                strSlaveKey = Mid(strSlaveKey, 2)

                If strSlaveKey = "__" Then Exit For

                If strSlaveKey = strKey Then
                    .Rows(lngRow).Hidden = False
                End If
            Next

            .Activate
            .Cells(1, 1).Select
        End With
    End If
End Sub

...在您要觸發選擇的工作表中,這是您的工作表A.

同樣在工作簿A中 ,在VBA編輯器中創建一個新模塊並粘貼以下代碼...

Public objSlave As Workbook
Public objSlaveSheet As Worksheet

Public Sub SelectSlaveBook()
    Dim objDlg As FileDialog, strFile As String, strSlaveSheetName As String

    strSlaveSheetName = "Sheet1"

    Set objDlg = Application.FileDialog(msoFileDialogOpen)

    objDlg.Show

    If objDlg.SelectedItems.Count > 0 Then
        strFile = objDlg.SelectedItems(1)

        Set objSlave = Application.Workbooks.Open(strFile, False, True)
        Set objSlaveSheet = objSlave.Worksheets(strSlaveSheetName)

        ThisWorkbook.Activate
    End If
End Sub

...在繼續之前,請確保將strSlaveSheetName的值更改為數據在“Slave”工作簿( B )中的工作表的名稱。

最后在工作表A中 ,將以下代碼添加到ThisWorkbook對象中...

Private Sub Workbook_Open()
    SelectSlaveBook
End Sub

...現在關閉主工作簿(在您的情況下,工作簿A )並再次打開它。

系統將提示您輸入“Slave”工作簿(工作簿B )的位置。

一旦你給了那個位置,選擇你想要選擇的東西,並保持所有東西不變,它應該適合你。

當然,如果它需要調整以滿足您的確切要求,那總是可行的。

我希望這個對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM