논리/엑셀 프로그래밍

역함수 x를 한 셀에 나열

섬그늘 2008. 11. 14. 12:25

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=W+/EJUjpW3EKsIptUDST+1IEqCqam0jq

 

이 질문에 대한 답은 VBA가 정법일 겁니다만 함수만으로도 방법은 있습니다. (VBA는 위 링크의 park_jang님 답변 참조)

 

 

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

2

번호

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

3

횟수

1

0

3

2

4

2

3

2

4

1

2

4

1

2

1

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

횟수

번호

5

 

 

 

 

 

 

 

 

 

 

 

 

 

6

0

2

1

 

, 2

 

 

 

 

 

 

 

 

 

 

 

7

1

1, 10, 13, 15

4

 

, 1

, 1, 10

, 1, 10, 13

, 1, 10, 13, 15

 

 

 

 

 

 

 

 

8

2

4, 6, 8, 11, 14

5

 

, 4

, 4, 6

, 4, 6, 8

, 4, 6, 8, 11

, 4, 6, 8, 11, 14

 

 

 

 

 

 

 

9

3

3, 7

2

 

, 3

, 3, 7

 

 

 

 

 

 

 

 

 

 

10

4

5, 9, 12

3

 

, 5

, 5, 9

, 5, 9, 12

 

 

 

 

 

D6 =COUNTIF(C$3:Q$3,B6)

D5 =MAX(D6:D10)

F6 =IF(COLUMN(A1)>$D6,"",E6&", "&INDEX($C$2:$Q$2,1,SMALL(IF($C$3:$Q$3=$B6,COLUMN($C$3:$Q$3)),COLUMN(A1))-COLUMN($B$2)))

C6 =RIGHT(INDIRECT(ADDRESS(ROW(),COLUMN(E6)+D6)),LEN(INDIRECT(ADDRESS(ROW(),COLUMN(E6)+D6)))-2)

 

F6은 수식 입력 후 CTRL+SHIFT+ENTER (배열수식) 해야 합니다. F6 잡아 D5 수치만큼 오른쪽으로 (예시에서는 5칸) 드래그 복사, C6:J6 잡아 아래로 데이타 행수 만큼 복사하면 표가 완성됩니다. F6은 순차적으로 해당데이타를 가져와 문자열로 붙입니다. C6은 =RIGHT(A1,LEN(A1)-1) 의 간단한 구조로, 결과문자열 앞의 ", " 두 글자를 없애고 완성된 문자열을 가져오는데, 열번호가 유동적이므로 INDIRECT로 유동참조를 한 것입니다. 엑셀화일을 텍스트화일로 저장하는 것은 '다른 이름으로 저장'을 선택, 화일 형식을 지정해 보세요.