원본 데이터의 연도가 모두 있고 해당 연도의 값 또는 # N / A가있는 차트가 있다고 가정합니다. NA()
기능.
이 경우에도 여전히 데이터에 남아 있기 때문에 연도가 차트에 계속 표시됩니다. 원본 데이터의 연도가 완전히 제거되도록 주위를 변경해야합니다.
사용자가 다른 연도를 선택할 때 피벗 캐시를 새로 고치려면 약간의 VBA를 작성해야하지만 피벗 차트로이 작업을 수행 할 수 있습니다.
또한 수식과 동적 범위를 사용하여이 작업을 수행 할 수 있습니다. 타당성은 차트 데이터가 얼마나 크고 동적인지에 달려 있습니다. 해마다 요약을 보여 주면 쉽습니다. 수백 가지 데이터 포인트를 표시하는 경우 성 가시고 수 있습니다.
원하는 결과가 무엇인지에 대한 예를 추가하여 답변을 만들 수 있습니까? (귀하의 답변을 바탕으로이 답변을 업데이트하겠습니다.)
OP 업데이트를 기반으로 한 업데이트
Excel이 삭제되지 않습니다. NA()
그래프에 아무 것도 없더라도 그래프를 볼 수 있기 때문에 텍스트가있는 것과 같습니다. 축에는 모든 마침표가 표시되므로 축에 배치 할 레이블이 있고 처리 할 수없는 데이터는 건너 뜁니다. Excel이 우리가 원하는 데이터 만 보도록 변경해야합니다.
- 문제 1) 특정 연도를 도표화하지 않음
- 문제 2) 앞으로 오는 것을 도표로 그린다. 후 그 년. (E.G. 차트 2014 및 2016 만)
문제 1에 불과하다면 몇 가지를 설정할 수 있습니다. 동적 명명 된 범위 차트 소스로 설정하십시오. 그러나 문제 2 때문에 중간 테이블을 먼저 설정해야하며 그때 명명 된 범위를 만듭니다.
첫째로, 이것이 조금 조밀 해지면 나는 사과한다. 나는 종종 너무 장황하다는 비난을 받는다. 나는 정말 여기에 파일을 업로드 할 수 있으면 좋겠다.
1 단계
여기 내 출발점의 CSV 버전이 있습니다. 내 데이터가 범위 내에 있습니다. A1:D35
(필자는 앞에 열을 추가했다. Order
- 나중에 도움이 될 것이며 데이터를 2016 년으로 확대했습니다.)
주문, 기간, 주문, 배송
1, P6 / 2014,281,74
2, P7 / 2014,498,126
3, P8 / 2014,589,132
4, P9 / 2014,655,158
5, P10 / 2014,679,161
6, P11 / 2014,489,115
7, P12 / 2014,574,129
8, P13 / 2014,340,80
9, P1 / 2015,615,225
10, P2 / 2015,0,0
11, P3 / 2015,0,0
12, P4 / 2015,0,0
13, P5 / 2015,0,0
14, P6 / 2015,0,0
15, P7 / 2015,0,0
16, P8 / 2015,0,0
17, P9 / 2015,0,0
18, P10 / 2015,0,0
19, P11 / 2015,0,0
20, P12 / 2015,0,0
21, P13 / 2015,0,0
22, P1 / 2016,0,0
23, P2 / 2016,0,0
24, P3 / 2016,0,0
25, P4 / 2016,0,0
26, P5 / 2016,0,0
27, P6 / 2016,0,0
28, P7 / 2016,0,0
29, P8 / 2016,0,0
30, P9 / 2016,0,0
31, P10 / 2016,0,0
32, P11 / 2016,0,0
33, P12 / 2016,0,0
34, P13 / 2016,0,0
2 단계
임시 표를 다음에 추가하십시오. NA()
무엇이 필요하지 않습니다. 1 단계와 동일 할 수 있습니다. 제 1 단계를 원시 데이터로 사용 했으므로이 다른 단계가 필요합니다. 내 데이터가 범위 내에 있습니다. F1:I35
. 내가 2015 년을 결심했을 때이 CSV처럼 보였습니다.
주문, 기간, 주문, 배송
1, P6 / 2014,281,74
2, P7 / 2014,498,126
3, P8 / 2014,589,132
4, P9 / 2014,655,158
5, P10 / 2014,679,161
6, P11 / 2014,489,115
7, P12 / 2014,574,129
8, P13 / 2014,340,80
9, P1 / 2015, # N / A, # N / A
10, P2 / 2015, # N / A, # N / A
11, P3 / 2015, # N / A, # N / A
12, P4 / 2015, # N / A, # N / A
13, P5 / 2015, # N / A, # N / A
14, P6 / 2015, # N / A, # N / A
15, P7 / 2015, # N / A, # N / A
16, P8 / 2015, # N / A, # N / A
17, P9 / 2015, # N / A, # N / A
18, P10 / 2015, # N / A, # N / A
19, P11 / 2015, # N / A, # N / A
20, P12 / 2015, # N / A, # N / A
21, P13 / 2015, # N / A, # N / A
22, P1 / 2016,0,0
23, P2 / 2016,0,0
24, P3 / 2016,0,0
25, P4 / 2016,0,0
26, P5 / 2016,0,0
27, P6 / 2016,0,0
28, P7 / 2016,0,0
29, P8 / 2016,0,0
30, P9 / 2016,0,0
31, P10 / 2016,0,0
32, P11 / 2016,0,0
33, P12 / 2016,0,0
34, P13 / 2016,0,0
3 단계
세 번째 테이블을 추가하여 그렇지 않은 값만 추출합니다. #N/A
두 번째 테이블에. 이는 배열 수식을 사용하여 수행됩니다. 우리가 어떻게 Order
기둥? 우리는 일치하지 않는 모든 가치를 찾을 것입니다. #N/A
~ 안에 Orders
열을 선택하고 남은 것을 사용하여 나머지 데이터를 가져옵니다. 세 번째 테이블이 범위 안에 있습니다. K1:N35
.
첫 번째 값에 대한 수식은 Order
열은 다음과 같습니다. (이 모든 수식의 경우 다음과 같이 입력해야합니다. SHIFT+ENTER
에 의해 표시되는 배열 수식으로 변환합니다. { }
양쪽 끝의 괄호.)
{=MIN(IF(NOT(ISERROR($H$2:$H$35)),$F$2:$F$35))}
그러면 첫 번째 값이 Order
두 번째 테이블의 열 ( F2:F35
) 어디에 Orders
열 ( H2:H35
)는 오류가 아닙니다.
나머지 두 번째 값의 수식은 Order
열은 다음과 같습니다.
=IF(OR($K2=0,$K2=MAX($F$2:$F$35)),0,MIN(IF(NOT(ISERROR($H$2:$H$35)),IF($F$2:$F$35>$K2,$F$2:$F$35))))
먼저, 이전 값 ( K2
이 경우) 0
또는 두 번째 테이블의 값 중 최대 값 (완료되었음을 의미)을 반환합니다. 0
그럴 경우. 그렇지 않으면, Order
열은 이전 값보다 크고 두 번째 테이블의 Orders
열은 오류가 아닙니다.
이 수식은 열의 나머지 부분으로 끌 수 있습니다. 결과는이 CSV처럼 보입니다.
주문
1
2
삼
4
5
6
7
8
22 개월
23
24
25 명
26 세
27
28
29
30
31
32
33
34
0
0
0
0
0
0
0
0
0
0
0
0
0
4 단계
다음의 조합을 사용하십시오. INDEX
과 MATCH
뭐든간에 값 조회 Order
값은 생존했습니다. 단계 3. 수식 기간, 주문 및 출하가 다음과 같이 순서대로 주어집니다.
=INDEX(B$2:B$35,MATCH($K2,$A$2:$A$35,0))
=INDEX(C$2:C$35,MATCH($K2,$A$2:$A$35,0))
=INDEX(D$2:D$35,MATCH($K2,$A$2:$A$35,0))
첫 번째 레코드로 입력하고 나머지는 복사 / 붙여 넣기하거나 아래로 드래그하십시오. 이것들은 첫 번째 테이블을 다시 참조하며 유일한 차이점은 첫 번째 매개 변수입니다. 2015 년을 숨길 경우 CSV가 표시됩니다.
주문, 기간, 주문, 배송
1, P6 / 2014,281,74
2, P7 / 2014,498,126
3, P8 / 2014,589,132
4, P9 / 2014,655,158
5, P10 / 2014,679,161
6, P11 / 2014,489,115
7, P12 / 2014,574,129
8, P13 / 2014,340,80
22, P1 / 2016,0,0
23, P2 / 2016,0,0
24, P3 / 2016,0,0
25, P4 / 2016,0,0
26, P5 / 2016,0,0
27, P6 / 2016,0,0
28, P7 / 2016,0,0
29, P8 / 2016,0,0
30, P9 / 2016,0,0
31, P10 / 2016,0,0
32, P11 / 2016,0,0
33, P12 / 2016,0,0
34, P13 / 2016,0,0
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
0, # N / A, # N / A, # N / A
5 단계
X 축 레이블, 계열 1 및 계열 2에 대한 동적 명명 된 범위를 만듭니다. Excel 2010을 사용하고 있으며 동적 명명 된 범위 인 경우 전체 차트 데이터 원본을 한 번에 설정할 수 없습니다. 업데이트되지 않는 하드 코딩 된 범위로 되돌아갑니다. 즉, 각 시리즈와 축마다 개별적으로 만들어야합니다. 명명 된 범위를 만들려면 Formulas
리본으로 클릭 Name Manager
중간 근처 어딘가에. 대화 상자 창에서 New
버튼을 클릭합니다. 참조 할 이름과 범위를 지정하십시오. 여기의 트릭은 특정 기능이 OFFSET
범위 객체를 반환하여 다음과 같은 객체 대신 여기에서 객체를 사용할 수 있습니다. =A1:D35
. 다음은 내가 만든 3 개의 명명 된 범위와 그 수식입니다.
이름: rngPeriod
공식:
=OFFSET(Sheet1!$L$2,0,0,IFERROR(MATCH(0,Sheet1!$K:$K,0)-2,MATCH(MAX(Sheet1!$A:$A),Sheet1!$K:$K,0)-1))
이름: rngOrders
공식:
=OFFSET(Sheet1!$M$2,0,0,IFERROR(MATCH(0,Sheet1!$K:$K,0)-2,MATCH(MAX(Sheet1!$A:$A),Sheet1!$K:$K,0)-1))
이름: rngShipments
공식:
=OFFSET(Sheet1!$N$2,0,0,IFERROR(MATCH(0,Sheet1!$K:$K,0)-2,MATCH(MAX(Sheet1!$A:$A),Sheet1!$K:$K,0)-1))
각 공식은 같은 방식으로 작동합니다. 우리가 원하는 데이터의 맨 위에서 시작하십시오. 아래로가. 첫 번째 찾기 0
~ 안에 Order
우리가 원하는 데이터의 끝을 나타내는 최대 값을 찾고 범위를 우리가 원하는 첫 번째 행에서부터 마지막 행까지의 모든 것을 포함 할 수있을 정도로 키가 크도록하십시오. 요점 : 오류가 발생하고 모든 값이 숨겨 지도록 매년 숨기려고하면 그래프가 표시되지 않습니다. #N/A
그리고 첫 번째 가치는 Order
표가 0
왜냐하면 MATCH
함수 반환 1
과 1-2=-1
너는 범위를 가질 수 없다. -1
키가 큰 행.
6 단계
이 동적 명명 된 범위를 사용하도록 차트를 설정하십시오. 원하는 모든 값을 사용하십시오. Series name:
그러나 Series values:
동적 범위의 이름이어야합니다. 매우 성가신 - 요점은 파일 이름을 포함해야한다는 것입니다. 수평 (카테고리) 축 레이블에 대해 동일한 작업을 수행하면 모든 설정이 완료됩니다. 시리즈 1, 시리즈 2 및 축 레이블에서 내 차트가 다음과 같이 사용되었습니다.
=sample.xlsx!rngOrders
=sample.xlsx!rngShipments
=sample.xlsx!rngPeriod
IF(conditions,"#N/A")
에IF(conditions, #N/A)