2017-04-18 6 views
1

필자는 인터넷에서 발견 한 함수를 사용하여 (피벗 테이블이 아닌 표에 연결된) 슬라이서 값을 추출하고이를 셀에 저장합니다. 이 기능에는 Refresh Excel VBA Function Results 질문에서 설명한 것처럼 application.volatile의 추가 기능이 포함되어 있습니다.새로 고침 application.volatile을 사용하지 않고 사용자 정의 함수

휘발성 기능 때문에 내 OpenSolver 모델을 실행할 수 없습니다. 왜냐하면 Excel은 계산을하고 있기 때문에 OpenSolver는 Excel이 모델링에 준비가되어 있지 않다고 생각합니다.

application.volatile을 사용하지 않고 슬라이서 값이 변경 될 때마다 셀 값을 업데이트하는 방법이 있습니까?

는 이미 사용하여 시도 :

Private Sub Worksheet_Change(ByVal Target As Range) 
    ActiveWorkbook.Sheets("Dashboard").Range("B7").Formula = _ 
     ActiveWorkbook.Sheets("Dashboard").Range("B7").Formula 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
     ActiveWorkbook.Sheets("Dashboard").Range("B7").Calculate 
End Sub 

내가 슬라이서 값을 추출하기 위해 사용하고있는 기능은 http://www.jkp-ads.com/articles/slicers05.asp에서 가져

:

Public Function GetSelectedSlicerItems(SlicerName As String) As String 
    Dim oSc As SlicerCache 
    Dim oSi As SlicerItem 
    Dim lCt As Long 
    On Error Resume Next 
    Set oSc = ThisWorkbook.SlicerCaches(SlicerName) 
    If Not oSc Is Nothing Then 
     For Each oSi In oSc.SlicerItems 
      If oSi.Selected Then 
       GetSelectedSlicerItems = GetSelectedSlicerItems & oSi.Name & ", " 
       lCt = lCt + 1 
      End If 
     Next 
     If Len(GetSelectedSlicerItems) > 0 Then 
      If lCt = oSc.SlicerItems.Count Then 
       GetSelectedSlicerItems = "maandag" 
      Else 
       GetSelectedSlicerItems = Left(GetSelectedSlicerItems, Len(GetSelectedSlicerItems) - 2) 
      End If 
     Else 
      GetSelectedSlicerItems = "No items selected" 
     End If 
    Else 
     GetSelectedSlicerItems = "No slicer with name '" & SlicerName & "' was found" 
    End If 
End Function 

답변

1

슬라이서 값을 셀에 표시하려면 VBA와 관련되지 않은 다른 방법을 사용하여 간접적으로 문제를 해결할 수 있습니다.

  1. 원래 피벗 테이블에는 복사본이없고 슬라이서 컨트롤 필드 만있는 복사본을 만듭니다.
  2. 해당 필드를 피벗 테이블 필드 대화 상자의 보고서 필터 창으로 끌어옵니다.
  3. 이 새로운 피벗 테이블 큰

이 분야에 슬라이서를 연결 : 이제 피벗 테이블이 데이터 유효성 검사 드롭 다운로 가장 있습니다. 이제 누군가 Slicer를 클릭 할 때마다 피벗 테이블 필터에는 클릭 한 이름이 포함됩니다. http://dailydoseofexcel.com/archives/2014/08/16/sync-pivots-from-dropdown/

+0

감사합니다. 피벗 테이블이 아니라 테이블에 가리키는 슬라이서를 추가해야합니다. 따라서 불행히도 연결을보고 할 수 없습니다. 사용자가 데이터를 변경할 수 있어야하기 때문에 테이블을 유지하려면 테이블이 필요합니다. –

0

은 내가 슬라이서 결정에서 값을 추출하는 기능을하지 않아도되는 완전히 다른 접근 방식을 시도 :

나는 다음 링크에서 언젠가 다시이 방법을 설명하는 글을 썼다 휘발성 휘발유. 대신, 나는 테이블에서 선택한 값을 공제했다. 나는 다음과 같이했다 :

하루를 기준으로 선택되는 슬라이서 : monday, tuesday 등. 일의 정수 표현 (monday = 1, sunday = 7)으로 열을 추가했다. 그리고, I는 셀을 다음 식을 사용했을

=SUBTOTAL(9;AF10:AF200)/SUBTOTAL(2;AF10:AF200) 

이런 코드는 제 가시 세포의 양으로 나눈 모든 표시 셀의 정수 값 (즉, I는 평균을 계산) 합산한다. 이것은 항상 선택된 날짜의 정수 값을 가져와야합니다. 그 숫자로, 나는 다시 그날의 문자열 표현을 찾는다.대신 위의 식의

, 당신은 물론 또한 사용할 수 있습니다 빠른 회신

=SUBTOTAL(1;AF10:AF200)