我會這樣做的方式將涉及幫助列和一個簡單的宏,並會做你想做的。
1部分:VBA宏
這個宏將在價格列表中的項目進行排序。
Sub Sorter()
Sheets("Products").select
Range("A:D").Select
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("B:B") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("C:C") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Products").Sort
.SetRange Range("A:D")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
第2部分:產品助手欄:您應該每次添加一個新的項目時運行
在產品表,F列中插入以下公式:
列F(單元格F2):=B2&"-"&C2
該公式將用於獲取該項目的價格,以防在不同類別下有多個具有相似名稱的項目。
3部分:下拉列表助手柱
在下拉列表片,在G列增加一個新的輔助柱,用下列公式計算:
="Products!$C"&MATCH($A2,Products!$B:$B,0)&":$C"&SUM(COUNTIF(Products!$B:$B,$A2),MATCH($A2,Products!$B:$B,0)-1)
數據驗證公式應該看第e範圍顯示在單元格G中使用間接(例如:=INDIRECT($G2)
指向該文件的鏈接附於here。
您可以隱藏幫助列,但確保在添加新項目時拖動公式。
要獲得該項目的價格,使用這個公式:
=SUMIF(Products!$F:$F,'Drop Down'!$A2&"-"&'Drop Down'!$B2,Products!$D:$D)
這將確保,如果2個類別也有類似的項目名稱,價格將是預期的項目。
我希望這會有所幫助。