[ 아별툴을 설치한 경우 ]
1. 아별툴을 설치하셨다면..
아래 아별함수 목록표를 참고하셔서 사용해보세요..
http://www.abyul.com/zbxe/86606
아별툴은 아래와 같은 함수들을 제공하고 있습니다.
sumByCellColor
sumByFontColor
countByCellColor
countByFontColor
'=== 절 취 선 ==========================================================================================
[사용자 정의 함수로 해결하는 방법]
1. 엑사모 사이트에 먼저 로그인 하신 다음.. http://www.examo.co.kr/
2. 아래 링크를 클릭하세요..
'=== 절 취 선 ==========================================================================================
[매크로 함수를 이용하는 방법]
* 참고사이트
http://www.iexceller.com/Contents(ExcelPart6).htm
http://www.iexceller.com/MyXls/Lectures/X0256.zip
http://cafe.naver.com/excelldoumi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=29
http://www.excellove.com/tn/board.php?board=qqqfaq&search=색&shwhere=subject&command=body&no=89
엑셀의 셀에 색상별로 표시를 해놨을 경우, 그들의 합은 어떻게 구할까?
이름 정의와 =GET.CELL()을 활용해서 COLOR INDEX를 뽑아낸 뒤, COLOR INDEX로 SUMIF()를 돌려서 해당 건들의 합계를구해보자.
첨부파일 다운 받기 : abyul_GetCell.xls
이하 퍼온 글..
출처 : http://cafe.naver.com/excelldoumi/29
Get.Cell(타입번호,참조주소) 로 바탕색,폰트색 알아내기
get.cell(타입번호,참조) 함수 (이름정의 와 VBA 에서만 사용가능함)
이름정의 샘플 =GET.CELL(1,sheet1!A105) & T(TODAY()-TODAY())
T(value) 값이 텍스트이면 값을 반환해주고 텍스트가 아니면 빈텍스트를 반환하는 함수
now(), today() 등 휘발성함수 : 업데이트가 잘되도록 해준다
그래도 F9 은 눌러주어야 한다
VBA 에서는 Application.Volatile : 엑셀이 재계산시 새로 계산되도록 해준다
전체재계산 Ctrl + Alt + F9 : F2 엔터 하는 효과가 있다
F9 눌러주는 효과를 VBA 로 작성하면 다음과 같다
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Volatile
DoEvents
SendKeys "{F9}"
End Sub
이것도 폰트색, 바탕색 바뀌는 것으로는 반응이 없다
셀 중 내용의 변화 가 있어야 반응한다
Type_Num
1 : 셀의 절대주소를 반환
5 : 셀의 값 반환
6 : 셀의 수식 (41 : 셀의 수식 6 과 동일함)
7 : 셀의 format 내용 반환 (반환값예 : yyyy"년" mm"월" dd"일")
18 : 셀서식의 폰트이름 반환
19 : 셀서식의 폰트사이즈 반환
20 : 폰트가 bold 체이면 True 아니면 False 반환
24 : 폰트색상값 (1 검정, 3 빨강, 5 파랑, 36 연노랑)
32 : 워크북과 워크시트이름을 =cell("filename")
48 : 셀에 수식이 있으면 True 아니면 False
53 : 셀의 내용 (셀서식 포함한 내용임)
63 : 셀의 배경색상 (38 : 셀바탕색 39 : 셀무늬 )
VBA 에서 사용 예
strCell = Application.ExecuteExcel4Macro("GET.CELL(1)")
Get.Cell()에서 참조가 생략되면 activeCell 을 의미한다
폰트색상별 합계구하기
=if(value(get.cell(24,a1)=3,a1,0) 폰트가 빨강색
바탕색상별 합계구하기
=if(value(get.cell(63,a1)=35,a1,0) 바탕색이 연녹색
색상 번호
색없슴 : 0
검정 : 1, 연노랑 : 36, 연녹색 : 35, 연한옥색 34, 흐린파랑 37
흰색 : 2, 회색 : 15, 빨강 : 3, 노랑 : 6, 하늘색 33, 연보라 39
색상표칸별 색상번호임
1 53 52 51 49 11 55 56
9 46 12 10 14 5 47 16
3 45 43 50 42 41 13 48
7 44 6 4 8 33 54 15
38 40 36 35 34 37 39 2
이름정의 사용예
bcolor =GET.CELL(63,getcell!$A5)&T(TODAY()-NOW())
fcolor =GET.CELL(24,getcell!$A6)&T(TODAY()-NOW())
fontnames =GET.CELL(18,getcell!$A7)&T(TODAY()-NOW())
get.cell 함수 사용할때는 시트이름이나 이름정의 에서 한글 사용하면 에러나는 경우가 있슴
다른파일로 복사 하니까 에러 난 경우가 있었슴.
VBA 에서 사용자정의함수로 만들어 사용하기
Function BaColor(rng As Range) As Integer '바탕색번호반환
Dim i As Integer
i = rng(1, 1).Interior.ColorIndex
BaColor = IIf(i < 0, 0, i)
End Function
Function FtColor(rng As Range) As Integer '폰트색번호반환
Dim i As Integer
i = rng(1, 1).Font.ColorIndex
FtColor = IIf(i < 0, 0, i)
End Function
사용방법 =BaColor(a1) , =FtColor(a1)
단 get.cell() 는 조건부서식에서 변하는 색에 대해서는 반응을 하지 않습니다.
bcolor =GET.CELL(63,getcell!$A23)&T(TODAY()-NOW())
fcolor =GET.CELL(24,getcell!$A25)&T(TODAY()-TODAY())
fontbold =GET.CELL(20,getcell!$A26)&T(TODAY()-TODAY())
fontnames =GET.CELL(18,getcell!$A27)&T(TODAY()-TODAY())
cellhasformula =GET.CELL(48,INDIRECT(ADDRESS(ROW(),COLUMN())))
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myrng As Range
Set myrng = Application.Intersect(Target(1, 1), Range("a:a"))
If myrng Is Nothing Then Exit Sub
Application.Volatile
DoEvents
SendKeys "^%{F9}" 'ctrl + alt + F9
End Sub
이런vba 로 시트의 a 열 변화가 있으면 재계산하라는 식으로 완벽하게 변한다
그런데 반응시간이 길다 좀 기다려야 변한다
DoEvent 때문인 것 같음.