標題:
[發問]
利用VBA隱藏特定數值的列(Row) 和排序(Sort)
[打印本頁]
作者:
ipip207
時間:
2017-2-25 14:04
標題:
利用VBA隱藏特定數值的列(Row) 和排序(Sort)
想請教各位如何用VBA 實現下列的條件,謝謝!
i) 隱藏C欄 數值大於2的列 (也就是在下面例子Hide Row 3,5,6)
ii) 設設下拉菜單,選取特定欄後自動按數值高至低排列 (例如下拉菜單包含Jan, Feb, Mar 3欄,選取E欄"Feb" 後自動把數值由高至低排序)
Sheet1
A B C D E F
1 Date Category YTM Jan Feb Mar
2 5/01 Equity 1 8.95 -3.45 6.72
3 7/01 Allocation 4 11.66 2.55 0.55
4 14/02 Bond 2 4.01 6.45 -4.3
5 5/03 Equity 3 2.91 7.44 0.002
6 5/03 Bond 3 2.55 3.23 -1.2
作者:
yen956
時間:
2017-2-28 12:25
回復
1#
ipip207
試試看
最上面插入一列
由左至右依序填入 ByDate,Show,Hide,Jan,Feb, Mar, ...,Dec
Private Sub Worksheet_selectionChange(ByVal Target As Range)
Dim Col%, LstR%, Rng As Range
Col = Target.Column
If Col > 15 Then Exit Sub
LstR = [A65536].End(xlUp).Row
Set Rng = Range([A2], Cells(LstR, 15)) '全部排序範圍
If Target.Row > 1 Then Exit Sub
If Col = 1 Then 'Sort byDate xlAscending(恢復原狀)
Rng.Sort _
Key1:=Range("A2"), Order1:=xlAscending, _
Header:=xlYes
ElseIf Col = 2 Then
Cells.EntireRow.Hidden = False
ElseIf Col = 3 Then
For I = 3 To LstR
If Cells(I, 3).Value > 2 Then
Cells(I, 3).EntireRow.Hidden = True
End If
Next
Else
Set Rng = Range([A2], Cells(LstR, 15)) '全部排序範圍, 6代表"F"
Rng.Sort _
Key1:=Cells(2, Col), Order1:=xlDescending, _
Header:=xlYes
End If
End Sub
複製代碼
[attach]26730[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)