Board logo

標題: [發問] 利用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
  1. Private Sub Worksheet_selectionChange(ByVal Target As Range)
  2.     Dim Col%, LstR%, Rng As Range
  3.     Col = Target.Column
  4.     If Col > 15 Then Exit Sub
  5.     LstR = [A65536].End(xlUp).Row
  6.     Set Rng = Range([A2], Cells(LstR, 15))     '全部排序範圍
  7.     If Target.Row > 1 Then Exit Sub
  8.     If Col = 1 Then       'Sort byDate xlAscending(恢復原狀)
  9.         Rng.Sort _
  10.             Key1:=Range("A2"), Order1:=xlAscending, _
  11.             Header:=xlYes
  12.     ElseIf Col = 2 Then
  13.         Cells.EntireRow.Hidden = False
  14.     ElseIf Col = 3 Then
  15.         For I = 3 To LstR
  16.             If Cells(I, 3).Value > 2 Then
  17.                 Cells(I, 3).EntireRow.Hidden = True
  18.             End If
  19.         Next
  20.     Else
  21.         Set Rng = Range([A2], Cells(LstR, 15))     '全部排序範圍, 6代表"F"
  22.         Rng.Sort _
  23.             Key1:=Cells(2, Col), Order1:=xlDescending, _
  24.             Header:=xlYes
  25.     End If
  26. End Sub
複製代碼
[attach]26730[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)