[英]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訪問它。 另一種訪問方式是從功能區中的“ 開發人員”選項卡,默認情況下隱藏。 要取消隱藏,請更改功能區以包含它。
從那里,您可以訪問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.