(다른) 워크 시트에서 두 개의 (피벗) 테이블 데이터를 비교하는 방법은 무엇입니까?

Christian St.

다음과 같은 동일한 열 구조를 가진 1 개의 Excel 파일에 2 개의 워크 시트가 있습니다.

BuildIndex | Phase | Module | Duration

BuildIndex기본 키로 사용됩니다 .

다음 예제 데이터를 가정하십시오.

워크 시트 1 :

1 | Phase 1 | Module 1 | 5
1 | Phase 2 | Module 1 | 3
1 | Phase 3 | Module 1 | 10
1 | Phase 1 | Module 2 | 6
1 | Phase 2 | Module 2 | 2
1 | Phase 3 | Module 2 | 5

워크 시트 2 :

2 | Phase 1 | Module 1 | 3
2 | Phase 2 | Module 1 | 7
2 | Phase 3 | Module 1 | 9
2 | Phase 1 | Module 2 | 2
2 | Phase 2 | Module 2 | 10
2 | Phase 3 | Module 2 | 4

지금은 다른 피벗 테이블과 다이어그램을 만들고 차이점을 "수동으로"분석하여 다음과 같은 결정을 내립니다.

  • 대한 빌드 인덱스 1 모듈 2는 빌드 X 초 빠른에서보다 빌드 인덱스 2
  • 위한 빌드 인덱스 2 3 단계 (모든 모듈의 합계) 빌드 Y 초보다 빠른 인 빌드 인덱스 1

그게 내가하고 싶은 일입니다.

단계가 많고 모듈 수가 지속적으로 증가하기 때문에 위의 절차는 너무 많은 시간이 걸리고 이러한 분석을 자동으로 수행하는 방법이 있다고 생각합니다.

그래서, 내 의도를 실현할 방법이 있는지 아십니까? Excel 수식이나 피벗 테이블 또는 vba 또는 또는 또는 또는 또는 :-)에 대한 힌트를 자유롭게 제공하십시오.

Christian St.

VBA를 사용하여 해결했습니다. 이전에 작업 한 적이 없으므로 코드를 개선 할 수 있습니다 ;-)

AllInOne단계 호출 (사용 된 모든 변수는로 선언 됨 String) :

Option Explicit

Sub ExtractUniquePhasesAndModules()
    '--------------------------------------
    '| Perform calculations for TEST DATA |
    '--------------------------------------
    srcSheet = "CompareData"
    destSheet = "CompareResults"
    destPkColumn = "A"
    destColumn = "B"
    calculateColumn = "C"

    'Phases 1
    srcPkCell = "A2"
    srcColumn = "B"
    sumValuesColumn = "D"
    AllInOne srcSheet, srcColumn, destSheet, destColumn, calculateColumn, sumValuesColumn, srcPkCell, destPkColumn

    'Phases 2
    srcPkCell = "F2"
    srcColumn = "G"
    sumValuesColumn = "I"
    AllInOne srcSheet, srcColumn, destSheet, destColumn, calculateColumn, sumValuesColumn, srcPkCell, destPkColumn
End Sub

그리고 이것은 문제 해결 기능입니다.

Private Sub AllInOne(srcSheetName As String, srcColumnName As String, destSheetName As String, _
                    destColumnName As String, calculateColumnName As String, sumValuesColumnName As String, _
                    srcPkCellName As String, destPkColumnName As String)

    Dim srcSheet As Worksheet
    Dim destSheet As Worksheet
    Dim srcColumn As Range
    Dim destColumn As Range
    Dim srcPkCell As Range
    Dim destPkColumn As Range
    Dim sumValuesColumn As Range
    Dim wsf As WorksheetFunction

    Set srcSheet = Worksheets(srcSheetName)
    Set srcColumn = srcSheet.Range(srcColumnName + ":" + srcColumnName)

    Set destSheet = Worksheets(destSheetName)
    Set destColumn = destSheet.Range(destColumnName + ":" + destColumnName)

    Set srcPkCell = srcSheet.Range(srcPkCellName)
    Set destPkColumn = destSheet.Range(destPkColumnName + ":" + destPkColumnName)

    Set sumValuesColumn = srcSheet.Range(sumValuesColumnName + ":" + sumValuesColumnName)

    Set wsf = WorksheetFunction

    '-----------------------
    'Copy all unique values|
    '-----------------------
    destSheet.Select
    Dim ctr As Range
    'find the first empty cell
    For Each ctr In destColumn.Cells
        If ctr.Value = "0" Then
            'do nothing
        ElseIf ctr.Value = Empty Then
            Exit For
        End If
    Next
    'start copying
    srcColumn.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ctr, Unique:=True

    'set destination range to only the new cells
    Set destColumn = destSheet.Range(ctr.Address + ":" + destColumnName & destColumn.Count)

    Dim cell As Range
    Dim calcCell As Range
    Dim destPkCell As Range
    For Each cell In destColumn.Cells
        'end of list reached?
        If cell.Value = Empty Then
            Exit For
        End If

        'Fill in primary key
        Set destPkCell = destSheet.Range(destPkColumnName & cell.Row)
        destPkCell.Value = srcPkCell.Value

        'Perform the sum-calculation and show the result
        Set calcCell = destSheet.Range(calculateColumnName & cell.Row)
        calcCell.Value = wsf.SumProduct(wsf.SumIf(srcColumn, "=" & cell.Value, sumValuesColumn))
    Next

End Sub

먼저 대상 열을 반복하여 첫 번째 빈 셀을 찾습니다. 이 셀은 함수 CopyToRange에서 인수 로 사용됩니다 AdvancedFilter.

그런 다음 기본 키 ( BuildIndex내 경우)와 SumProduct모든 행 의 결과를 삽입합니다 .

질문 데이터를 사용한 단계의 결과는 다음과 같습니다.

1 | Phase   | 0
1 | Phase 1 | 11
1 | Phase 2 | 5
1 | Phase 3 | 15
2 | Phase   | 0
2 | Phase 1 | 5
2 | Phase 2 | 17
2 | Phase 3 | 13

이제 원하는대로 다이어그램을 만들 수 있습니다. :-)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL Server에서 두 개의 다른 테이블에있는 셀의 데이터를 비교하는 방법은 무엇입니까?

분류에서Dev

SQL- 두 개의 다른 테이블에서 데이터를 선택하는 방법은 무엇입니까?

분류에서Dev

VBA에서 서로 다른 워크 시트의 두 값을 비교하는 방법은 무엇입니까?

분류에서Dev

다른 테이블의 두 데이터를 비교할 때 트리거를 사용하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 SQL 테이블을 비교하고 다른 값을 얻는 방법은 무엇입니까?

분류에서Dev

서로 다른 두 데이터베이스 인스턴스의 두 테이블을 비교하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

SQL에서 두 테이블의 데이터를 비교하는 방법은 무엇입니까?

분류에서Dev

하나의 피벗 테이블에서 여러 피벗 차트를 만드는 방법은 무엇입니까?

분류에서Dev

쿼리 데이터를 두 개의 다른 배열에 넣은 다음 두 테이블에 에코하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 열 사이에서 팬더의 값을 비교하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 테이블에서 두 열의 MIN 및 MAX를 찾는 방법은 무엇입니까?

분류에서Dev

카누에서 두 개의 다른 비트 맵 이미지를 표시하는 방법은 무엇입니까?

분류에서Dev

orientDB의 동일한 테이블에서 두 개의 다른 에지 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

orientDB의 동일한 테이블에서 두 개의 다른 에지 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

동일한 필드를 두 번 더하지만 피벗 테이블에서 다른 합계 기준을 사용하는 방법은 무엇입니까?

분류에서Dev

한 워크 시트의 데이터를 다른 워크 시트의 데이터 변경 아래에 붙여 넣는 방법은 무엇입니까?

분류에서Dev

한 워크 시트의 피벗 테이블에서 다른 워크 시트의 데이터 복사

분류에서Dev

Django에서 두 개의 다른 테이블에서 데이터를 반환하는 방법은 무엇입니까?

분류에서Dev

피벗 테이블의 오른쪽 열에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

mysql의 단일 절차를 통해 두 개의 서로 다른 데이터베이스에있는 두 개의 서로 다른 테이블의 레코드를 업데이트하는 방법은 무엇입니까?

분류에서Dev

한 행의 데이터를 Google 시트의 다른 테이블의 모든 데이터 행과 비교하는 방법은 무엇입니까?

분류에서Dev

다른 두 테이블의 계산을 기반으로 한 테이블에서 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

피벗 테이블을 사용하여 다른 테이블의 열을 표시하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 객체 키를 비교하고 키가 Javascript에서 동일한 경우 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 데이터베이스에서 다른 테이블을 통합하는 방법은 무엇입니까?

분류에서Dev

YII2에서 두 개의 데이터베이스 테이블 필드를 비교하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 테이블에서 열 값을 반환하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 테이블에서 JSON 배열을 쿼리하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 서비스에서 데이터를받은 후 지시문에서 함수를 호출하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    SQL Server에서 두 개의 다른 테이블에있는 셀의 데이터를 비교하는 방법은 무엇입니까?

  2. 2

    SQL- 두 개의 다른 테이블에서 데이터를 선택하는 방법은 무엇입니까?

  3. 3

    VBA에서 서로 다른 워크 시트의 두 값을 비교하는 방법은 무엇입니까?

  4. 4

    다른 테이블의 두 데이터를 비교할 때 트리거를 사용하는 방법은 무엇입니까?

  5. 5

    두 개의 다른 SQL 테이블을 비교하고 다른 값을 얻는 방법은 무엇입니까?

  6. 6

    서로 다른 두 데이터베이스 인스턴스의 두 테이블을 비교하는 가장 좋은 방법은 무엇입니까?

  7. 7

    SQL에서 두 테이블의 데이터를 비교하는 방법은 무엇입니까?

  8. 8

    하나의 피벗 테이블에서 여러 피벗 차트를 만드는 방법은 무엇입니까?

  9. 9

    쿼리 데이터를 두 개의 다른 배열에 넣은 다음 두 테이블에 에코하는 방법은 무엇입니까?

  10. 10

    두 개의 다른 열 사이에서 팬더의 값을 비교하는 방법은 무엇입니까?

  11. 11

    두 개의 다른 테이블에서 두 열의 MIN 및 MAX를 찾는 방법은 무엇입니까?

  12. 12

    카누에서 두 개의 다른 비트 맵 이미지를 표시하는 방법은 무엇입니까?

  13. 13

    orientDB의 동일한 테이블에서 두 개의 다른 에지 데이터를 검색하는 방법은 무엇입니까?

  14. 14

    orientDB의 동일한 테이블에서 두 개의 다른 에지 데이터를 검색하는 방법은 무엇입니까?

  15. 15

    동일한 필드를 두 번 더하지만 피벗 테이블에서 다른 합계 기준을 사용하는 방법은 무엇입니까?

  16. 16

    한 워크 시트의 데이터를 다른 워크 시트의 데이터 변경 아래에 붙여 넣는 방법은 무엇입니까?

  17. 17

    한 워크 시트의 피벗 테이블에서 다른 워크 시트의 데이터 복사

  18. 18

    Django에서 두 개의 다른 테이블에서 데이터를 반환하는 방법은 무엇입니까?

  19. 19

    피벗 테이블의 오른쪽 열에서 값을 얻는 방법은 무엇입니까?

  20. 20

    mysql의 단일 절차를 통해 두 개의 서로 다른 데이터베이스에있는 두 개의 서로 다른 테이블의 레코드를 업데이트하는 방법은 무엇입니까?

  21. 21

    한 행의 데이터를 Google 시트의 다른 테이블의 모든 데이터 행과 비교하는 방법은 무엇입니까?

  22. 22

    다른 두 테이블의 계산을 기반으로 한 테이블에서 데이터를 검색하는 방법은 무엇입니까?

  23. 23

    피벗 테이블을 사용하여 다른 테이블의 열을 표시하는 방법은 무엇입니까?

  24. 24

    두 개의 다른 객체 키를 비교하고 키가 Javascript에서 동일한 경우 값을 업데이트하는 방법은 무엇입니까?

  25. 25

    두 개의 다른 데이터베이스에서 다른 테이블을 통합하는 방법은 무엇입니까?

  26. 26

    YII2에서 두 개의 데이터베이스 테이블 필드를 비교하는 방법은 무엇입니까?

  27. 27

    두 개의 다른 테이블에서 열 값을 반환하는 방법은 무엇입니까?

  28. 28

    두 개의 다른 테이블에서 JSON 배열을 쿼리하는 방법은 무엇입니까?

  29. 29

    두 개의 다른 서비스에서 데이터를받은 후 지시문에서 함수를 호출하는 방법은 무엇입니까?

뜨겁다태그

보관