2014-12-18 3 views
0

Excel 테이블에서보기 옵션을 만들려고합니다. Sales, Contracts, Accounts 및 All이라고 표시된 라디오 버튼을 준비했습니다. 각 부서는 특정 부서와 관련된 항목에 따라 열을 표시하거나 숨 깁니다. 어떤 열이 관련이 있는지를 필터링하는 방법은 s, c 또는 a가 포함되어 있는지 확인하는 각 열 (맨 위)에 셀을 넣는 것입니다. 두 부서에서 동일한 열을 볼 필요가있는 경우 쉼표를 사용하는 가장 좋은 방법은 무엇입니까? 여기 VBA 셀 값에 따라 열 선택

table

view options

내가 현재 가지고있는 코드이지만, 세포가 매크로 코드를 정의 할 필요

Sub SalesOption_Click() 
Columns("B:DD").Select 
Selection.EntireColumn.Hidden = True 
Application.Union(Columns("c:p"), Columns("bt:bw"), Columns("cb")).Select 
Selection.EntireColumn.Hidden = False 
Range("$A$1").Select 
End Sub 

Sub AllOption_Click() 
Columns("B:DD").Select 
Selection.EntireColumn.Hidden = False 
Range("$A$1").Select 
End Sub 

모든 지침은 많이 주시면 감사하겠습니다.

+0

하지 응답 사용 표시하려면,하지만 제거하십시오 모든'Select'와'Selection'! http://stackoverflow.com/q/10714251/78522 –

답변

2

삽입이 기능 :

Function FindCols(colVal As String) 
    Columns("B:DD").EntireColumn.Hidden = False 
    Dim LastCol As Integer 
    Dim desigRow As Integer 
    desigRow = 1 'first row will be checked for letters 
    With ActiveSheet 
     LastCol = .Cells(desigRow, .Columns.Count).End(xlToLeft).Column 
    End With 
    Dim i As Integer 
    Dim rng As Range 
    For i = 1 To LastCol 
     Set rng = Cells(desigRow, i) 
     If InStr(1, Cells(desigRow, i), colVal) = 0 Then 'If the column doesn't contain the wanted letter -> hide it 
      rng.EntireColumn.Hidden = True 
     End If 
    Next i 
End Function 

이 올바른 콘텐츠의 열을 검색하고 그들이 그것을 포함하지 않는 경우를 숨 깁니다.

지금 당신은 단지 예를 들어, 버튼의 잠수정에서이 함수를 호출 할 수 있습니다

Sub SalesOption_Click() 
    FindCols "s" 
End Sub 

또는

Sub AllOption_Click() 
    Columns("B:DD").EntireColumn.Hidden = False 
End Sub 

다른 두 자신이 (힌트를 생성 할 수 있어야한다 : 한 글자 만 다릅니다).

편집 : ALL 기타 사항 서보 -OFF - 문의 회피를위한 소원을 만족하기 위해, 나는 내 코드

+0

좋은 솔루션, 사소한 관찰 어둠의 범위를 상단으로, 루프 밖에서 이동 –

+0

좋은 생각, 내가 편집 할게. – EngJon

+0

답변 해 주셔서 감사합니다. 어디에서 "s"를 넣을 때 행을 바꿀 수 있습니까? 코드를보고 1 행을 시도했지만 작동하지 않습니다. – JosephFTaylor

0

을 변경 또는 내가 그 방법을 모르는 당신은 내가에서 InputBox를 사용했습니다이 사용할 수 검색 할 편지를 지정하고 싶습니다.

Sub SO() 

filterLet = InputBox("Enter Letter") 
For i = 2 To 108 
    Cells(1, i).EntireColumn.Hidden = InStr(1, Cells(1, i).Value, filterLet) = 0 
Next i 

End Sub 

모든 단지

Columns("B:DD").EntireColumn.Hidden = False 
관련 문제