달력

42025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

엑셀 단축키

excel 2008. 11. 15. 17:01

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=4CmtIMBFii8n/TZIAmRqDsYRA5EezoO1&qb=v6K8vyDBpLfEILTcw+DFsA==&pid=feItkloi5UlsscHLTXNsss--059534&sid=SR6Ar25lHkkAABdLXd8

1. 단축키 설명

 


○ Alt + Enter 셀 안에 있는 내용 입력시 새 줄을 만들어 줍니다.

○ Ctrl + Enter 셀 범위를 지정한 후 내용을 입력하고 Ctrl+Enter를 누르면 셀 범위에 동일한 내용이 채워집니다.

○ Shift + Enter 셀 입력을 완료하고 위의 이전 셀을 선택합니다.

○ Tab 셀 입력을 완료하고 오른쪽에 있는 다음 셀을 선택합니다.

○ Shift + Tab 셀 입력을 완료하고 왼쪽에 있는 이전 셀을 선택합니다.

○ F4 또는 Ctrl + Y 바로 전에 작업한 내용을 반복합니다.

○ Ctrl + Z 바로 전에 작업한 내용을 취소합니다.

○ Ctrl + D 빈 셀에 데이터를 입력한 후 아래 셀로 이동하고 Ctrl+D를 누르면 동일한 내용이 채워집니다.

○ Ctrl + R 빈 셀에 데이터를 입력한 후 오른쪽 셀로 이동하고 Ctrl+R을 누르면 동일한 내용이 채워집니다.

○ Ctrl + F3 범위를 지정한 후 Ctrl+F3을 누르면 셀 영역에 셀 이름을 바로 지정할 수 있습니다.

○ Ctrl + Shift + F3 행/열 레이블을 기준으로 이름을 정의할 수 있습니다.

○ Ctrl + K 하이퍼링크를 삽입합니다.

○ Ctrl + ;(세미콜론) 오늘 날짜를 자동으로 입력합니다.

○ Ctrl + Shift + :(콜론) 현재 시간을 자동으로 입력합니다.

○ Alt+아래쪽 화살표 목록의 현재 열 값을 드롭다운 목록으로 나타냅니다.

 


2. 데이터 서식 단축키 설명


○ Alt + '(아포스트로피) 스타일 대화 상자를 나타냅니다.

○ Ctrl + 1 셀 서식 대화 상자를 나타냅니다.

○ Ctrl + 2 데이터를 입력한 후 범위를 지정하고 Ctrl+2를 누르면 데이터에 강조가 지정되거나 제거됩니다.

○ Ctrl + 3 데이터를 입력한 후 범위를 지정하고 Ctrl+3을 누르면 데이터에 기울임꼴이 지정되거나 제거됩니다.

○ Ctrl + 4 데이터를 입력한 후 범위를 지정하고 Ctrl+4를 누르면 데이터에 밑줄이 지정되거나 제거됩니다.

○ Ctrl + 5 데이터를 입력한 후 범위를 지정하고 Ctrl+5를 누르면 데이터에 취소선이 지정되거나 제거됩니다.

○ Ctrl + Shift + $ 소수 두 자리의 통화 서식을 적용합니다. (음수는 괄호로 표시)

○ Ctrl + Shift + % 소수 자릿수 없이 백분율 서식을 적용합니다.

○ Ctrl + Shift + # 일, 월, 년의 날짜 서식을 적용합니다.

○ Ctrl + Shift + @ 시간과 분, AM/PM으로 시간 서식을 적용합니다.

○ Ctrl + I 기울임꼴 서식을 적용하거나 제거합니다.

○ Ctrl + U 밑줄 서식을 적용하거나 제거합니다.

○ Ctrl + 9 선택한 행을 숨깁니다.

○ Ctrl+Shift+((여는 괄호) 선택 영역 안에서 숨겨진 행의 숨김을 모두 취소합니다.

○ Ctrl + 0(영) 선택한 열을 숨깁니다.

○ Ctrl+Shift+)(닫는 괄호) 선택 영역 안에서 숨겨진 열의 숨김을 모두 취소합니다.

○ Ctrl+Shift+&(앰퍼샌드) 선택한 셀에 윤곽선 테두리를 적용합니다.

○ Ctrl + Shift + _(밑줄) 선택한 셀에서 윤곽선 테두리를 제거합니다.

 


3. 기타 단축키 설명

 


○ F11 또는 Alt + F1 현재 범위의 데이터에 대한 차트를 만듭니다.

○ Ctil+PgUp, Ctrl+PgDn 시트간에 이동을 할 때 사용할 때 사용합니다.

○ Ctrl + - 선택된 행 또는 열을 삭제합니다.

○ Ctrl + Shift + + 선택된 행 또는 열을 삽입합니다.

○ Alt + F11 Visual Basic Editor 창을 열어줍니다. VBA 소스 코드를 확인할 때 사용합니다.

○ Ctrl + Shift + * 현재 입력된 데이터의 전체 범위를 선택합니다.

○ Ctrl + ~ 현재 시트에서 셀에 입력된 수식을 확인하고 싶다면 해당 셀을 선택하고 Ctrl + ~를 누르면 됩니다. 다시 누르면 원래 상태로 돌아갑니다.

 

 



Posted by marryjane
|

SPLIT 한 데이터를 비교

excel 2008. 11. 13. 19:06

Method Detail
delimiter 로 붙어있는 TEXT 를 비교한다.

Method Source
Function SEARCH_WORD(find_word As String, word_array As String, delimiter As String)
    Dim arrWord() As String
    Dim flag As Boolean
    flag = False
    
    arrWord = Split(word_array, delimiter, -1)
    
    For i = 0 To UBound(arrWord)
        If find_word = arrWord(i) Then
            flag = True
        End If
    Next i
    SEARCH_WORD = flag
End Function

Method Summary
SEARCH_WORD(
find_word  As String  -  검색하려는 문자열
, word_array  As String  -  대상 문자열  ex) "PRICE,PAY,AMOUNT" 
, delimiter  As String  -  delimiter
)
Posted by marryjane
|

Method Detail
VLOOKUP 으로 검색 시 데이터가 중복된 경우에는 첫번째 값만을 리턴한다.
해결하기 위한 방법으로 사용자 정의 함수를 선언하여 사용한다.
중복된 경우 "," 를 delimiter 로 여러 값을 리턴한다.
문제는 계산하는 시간이 무지막지 걸린다는 거.

Method Source
Function VLOOKUPS(lookup_value As String, table_array As Range, key_col_index_num As Integer, col_index_num As Integer)
    Dim rowNum As Long
    Dim str As String

    With table_array
        rowNum = .Rows.Count
        For i = 1 To rowNum
            If lookup_value = .Cells(i, key_col_index_num).Value Then
                str = str & "," & .Cells(i, col_index_num).Value
            End If
        Next i
    End With
    
    If Len(str) > 0 Then
        str = Right(str, Len(str) - 1)
    End If
    VLOOKUPS = str
End Function

Method Summary
VLOOKUPS(
lookup_value As String  -  검색하려는 문자열
, table_array As Range  -  찾을 범위 배열
, key_col_index_num As Integer  -  검색대상 col 인덱스
, col_index_num As Intege  -  얻으려는 값의 col 인덱스
)

'excel' 카테고리의 다른 글

엑셀 단축키  (0) 2008.11.15
SPLIT 한 데이터를 비교  (0) 2008.11.13
사용자 정의 함수 사용하기  (0) 2008.11.11
[함수]문자열자르기 - SEARCH  (0) 2008.11.11
[함수]중복된 목록에서 데이터 불러오기  (0) 2008.10.02
Posted by marryjane
|

Function getDepth(dataType As String, depth As Integer)
    If dataType = "array-S" Then
        depth = depth + 1
    ElseIf dataType = "array-E" Then
        depth = depth - 1
    End If
    
    getDepth = depth
End Function


Posted by marryjane
|

ACTION.Arr01*.PibojaCellphoneExNo
ACTION.PibojaCellphoneExNo
Arr01*.PibojaCellphoneExNo
PibojaCellphoneExNo
=IF(ISERROR(SEARCH("~*.",A1)), IF(ISERROR(SEARCH(".",A1)), A1, REPLACE(MID(A1,SEARCH(".",A1),LEN(A1)), 1, 1, "")), REPLACE(MID(A1,SEARCH("~*.",A1),LEN(A1)), 1, 2, ""))

결과
PibojaCellphoneExNo

왼쪽부터 특정 문자열을 찾아 뒷부분을 잘라내기
=IF(ISERROR(SEARCH("~*.",A1)), A1, REPLACE(MID(A1,SEARCH("~*.",A1),LEN(A1)), 1, 2, ""))

Posted by marryjane
|

http://kin.naver.com/knowhow/entry.php?eid=8exJH8kaO+SwlbFfPflNJ8AFKSXmUV9e

  A B C
1 목록1 목록2
2 1 a
3 2 b
4 3 c
5 4 d
6 5 e
7 6 f
8 7 g
9 8 h
10 9 i
11 10 j
12 11 k
13 12 l
14 13 m
15 14 n
16 15 o
17 16 p

 

위와 같은 목록에서

 

=VLOOKUP("아",$A$1:$C$17,3,FALSE)

를 하면 값은 h 가 출력됩니다.

 

하지만 값 열의 i의 값을 불러올 수는 없습니다.

 

하지만 목록1과 목록2에서 조건을 주어 값 열의 데이터를 원하는 것으로

불러올 수는 있습니다

 

목록1 목록2
1 a
16 p

 

a 와 p의 값의 수식은

 

=INDIRECT("C"&SUMPRODUCT(($B$2:$B$17=F2)*($C$2:$C$17=G2)*(ROW($D$2:$D$17))))

 

=INDIRECT("C"&SUMPRODUCT(($B$2:$B$17=F3)*($C$2:$C$17=G3)*(ROW($D$2:$D$17))))

입니다

 

여기서 수식 설명입니다

 

SUMPRODUCT(($B$2:$B$17=F3)*($C$2:$C$17=G3)*(ROW($D$2:$D$17)))

 

에서

$B$2:$B$17=F2  는 "가" 일 때만

1의 값을 나머지는 0의 값을 가집니다

 

$C$2:$C$17=G2  는 1 일 때만 1의 값을 가지고 나머지는 0을 가집니다

 

($B$2:$B$17=F2)*($C$2:$C$17=G2)

의 값은

 

1 1 1
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
1 0 0

 

에서 2번째 열의 값으로 배열형태를 취합니다

 

ROW($C$2:$C$17)

는 각각의 셀의 행번호이고

 

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

의 값으로 배열의 형태를 취합니다

 

여기서

 

sumproduct 함수의 값은

위의 두 수식에서

각각 2와 17을 가집니다

 

그리고

 

마지막으로 indirect 함수를 적용합니다

c 열에서 값을 불러오므로

=Indirect("C"&

 

까지 해서 열의 값을 지정하고 행의 값은 위의 Sumproduct 함수의 결과값으로 지정하면

 

위의 수식은 각각

=Indirect("C2")

=Indirect("C17")

 

이 됩니다

 

최종적으로

 

첫번째 수식=a

두번째 수식=p

의 값을 출력합니다


'excel' 카테고리의 다른 글

사용자 정의 함수 사용하기  (0) 2008.11.11
[함수]문자열자르기 - SEARCH  (0) 2008.11.11
[함수]파일 및 시트명  (0) 2008.09.30
[함수]엑셀함수  (0) 2008.09.30
[함수]indirect - 문자열을 참조로 사용할 때  (0) 2008.09.25
Posted by marryjane
|

[함수]파일 및 시트명

excel 2008. 9. 30. 13:27

시트명 
=REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),"")

년/월/시트명
=DATE(YEAR(TODAY()),MONTH(TODAY()),REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),""))

파일명 
=MID(CELL("filename"),FIND("[",CELL("filename"))+1,FIND("]",CELL("filename"))-FIND("[",CELL("filename"))-5)

현재파일의 시트로의 하이퍼링크
=HYPERLINK(CONCATENATE(MID(CELL("filename"),FIND("[",CELL("filename")),FIND("]",CELL("filename"))-FIND("[",CELL("filename"))+1), K2, "!a8"),K2)

줄바꿈
CHAR(10)

시트명 오름차순정렬 메크로
Sub SheetsSort()
 Dim i As Integer
 Dim j As Integer
 Dim intCount As Integer
 Dim varTemp
 Dim strName() As String
    
   intCount = Sheets.Count
    ReDim strName(intCount)
    
    For i = intCount To 1 Step -1
        strName(i) = Sheets(i).Name
    Next i
    
    For i = UBound(strName()) - 1 To LBound(strName()) Step -1
        For j = 1 To i
            If strName(j) > strName(j + 1) Then
                varTemp = strName(j)
                strName(j) = strName(j + 1)
                strName(j + 1) = varTemp
                Sheets(varTemp).Move after:=Sheets(strName(j))
            End If
        Next j
    Next i
    Sheet1.Activate
End Sub
Posted by marryjane
|

[함수]엑셀함수

excel 2008. 9. 30. 13:22


수학함수 

PRODUCT(number1,number2,...)

- 인수를 모두 곱한 결과를 표시합니다.

RANDBETWEEN(bottom,top)

- 지정한 두 수 사이의 임의의 수를 반환합니다. 워크시트를 계산할 때마다 새로운 임의의 수가 반환됩니다.

ROMAN(number,form)

- 아라비아 숫자를 텍스트인 로마 숫자로 변환합니다.

- form : 0-고전스타일, 1~3 -더간결, 4-단순스타일

ROUND(number,num_digits) | ROUNDDOWN(number,num_digits) | ROUNDUP(number,num_digits)

- 숫자를 지정한 자릿수로 반올림합니다.

SUBTOTAL(function_num,ref1,ref2, ...)

- 목록이나 데이터베이스에서 부분합을 구합니다. 일반적으로 데이터 메뉴의 부분합 명령을 사용하여 부분합 목록을 작성하는 것보다 더 쉽습니다. 일단 부분합 목록이 만들어지면 SUBTOTAL 함수를 편집하여 목록을 수정할 수 있습니다.

- function_num : 1-AVERAGE, 2-COUNT, 3-COUNTA,4-MAX,5-MIN,6-PRODUCT,7-STDEV,8-STDEVP,9-SUM,10-VAR,11-VARP

SUM(number1,number2, ...)

SUMIF(range,criteria,sum_range)

- range : 조건을 적용시킬 셀 범위, 

- criteria : 숫자,수식 텍스트 형태로 찾을 조건(ex  32, "32"," >32", "사과")

- sum_range : 합을 구할 실제 셀.

- ex. SUMIF(A2:A5,">160000",B2:B5)

SUMPRODUCT(array1,array2,array3, ...)

- 주어진 배열에서 해당 요소들을 모두 곱하고 그 곱의 합계를 반환합니다.

SUMSQ(number1,number2, ...)

- 인수의 제곱의 합을 반환합니다.


날짜 및 시간함수

DATE(year,month,day)

- 특정 날짜를 나타내는 순차 일련 번호를 반환합니다. 함수가 입력되기 전의 셀이 일반 서식을 가지고 있어도 결과값은 날짜 서식으로 지정됩니다.

DATEVALUE(date_text) 

- date_text에 해당하는 날짜의 일련 번호를 반환합니다. 텍스트로 표시된 날짜를 DATEVALUE를 사용하여 일련 번호로 변환합니다.

DAY(serial_number)
- 주어진 날짜에서 일에 대한 일련 번호를 반환합니다. 일은 1에서 31까지의 정수로 표시됩니다.

DAYS360(start_date,end_date,method)

- 1년을 360일(12달*30일)로 가정하고 두 날짜 사이의 일 수를 반환합니다. 회계 계산에 사용됩니다. 회계 체계가 12달 30일을 기준으로 할 때 이 함수를 사용하여 임금을 계산할 수 있습니다.

EDATE(start_date,months)

- 지정한 날짜(start_date) 전이나 후의 개월 수를 나타내는 날짜의 일련 번호를 반환합니다. EDATE를 사용하여 발행일과 월과 일이 같은 만기일이나 기한을 계산합니다.

EOMONTH(start_date,months)

- start_date로 지정된 달 수 이전이나 이후의 달의 마지막 날의 날짜 일련 번호를 반환합니다. EOMONTH를 사용하여 그 달의 마지막 날에 해당하는 만기일을 계산할 수 있습니다.

HOUR(serial_number)
- 시간 값의 시를 반환합니다. 시간은 0(오전 12:00)부터 23(오후 11:00)까지의 정수로 표시됩니다.

MINUTE(serial_number)
- 시간 값의 분을 반환합니다. 분은 0부터 59까지의 정수로 표시됩니다.

SECOND(serial_number)

- 시간 값의 초를 반환합니다. 초는 0(영)부터 59까지의 정수로 표시됩니다.

MONTH(serial_number)

- 일련 번호로 표시된 날짜의 월을 표시합니다. 월은 1(1월)에서 12(12월)까지의 정수로 표시됩니다.

NETWORKDAYS(start_date,end_date,holidays)
- start_date와 end_date 사이의 전체 작업 일수를 반환합니다. 작업 일수에 주말과 휴일은 포함되지 않습니다. NETWORKDAYS를 사용하면 특정 기간 동안 작업한 날짜 수를 기초로 하여 발생된 직원의 임금을 계산할 수 있습니다.

NOW( )

- 현재 날짜와 시간의 일련 번호를 반환합니다. 함수가 입력되기 전의 셀이 일반 서식을 가지고 있어도 결과값은 날짜 서식으로 지정됩니다.

TIME(hour,minute,second)

- 특정 시간에 대한 정수를 반환합니다. 함수가 입력되기 전의 셀이 일반 서식을 가지고 있어도 결과값은 날짜 서식으로 지정됩니다.

TIMEVALUE(time_text)

- 시간을 나타내는 실수를 텍스트 문자열로 반환합니다. 실수는 0(영)부터 0.99999999까지 범위의 값이며 0:00:00(오전 12:00:00)부터 23:59:59(오후 11:59:59)까지의 시간을 나타냅니다.

TODAY( )

- 현재 날짜의 일련 번호를 구합니다. 일련 번호는 Microsoft Excel에서 날짜와 시간 계산에 사용하는 날짜-시간 코드입니다. 함수가 입력되기 전의 셀이 일반 서식을 가지고 있어도 결과값은 날짜 서식으로 지정됩니다.

WEEKDAY(serial_number,return_type)
- 날짜에 해당하는 요일을 표시합니다. 기본적으로 요일은 1(일요일)에서 7(토요일)까지의 정수입니다.

WEEKNUM(serial_num,return_type)

- 지정한 주가 일 년 중 몇째 주인지를 나타내는 숫자를 반환합니다.

WORKDAY(start_date,days,holidays)

- 특정 일(시작 날짜)의 전이나 후의 날짜 수에서 주말이나 휴일을 제외한 날짜 수, 즉 평일 수를 반환합니다. WORKDAY 함수를 사용하면 청구서 지불 기한이나 배달 예정일, 작업 일수 등을 계산할 때 주말이나 휴일을 제외할 수 있습니다.

YEAR(serial_number)
- 날짜에 해당하는 연도를 표시합니다. 연도는 1900에서 9999까지의 정수입니다.

YEARFRAC(start_date,end_date,basis)

- start_date와 end_date 사이의 날짜 수가 일 년 중 차지하는 비율을 반환합니다. YEARFRAC 워크시트 함수를 사용하면 특정 기간에 대한 연간 이익 또는 채무의 비율을 구할 수 있습니다.

- basis : 0 or 생략-미국(미국증권업협회) 30/360, 1-실제/실제, 2-실제/360, 3-실제/365, 4-유럽 30/360 


텍스트 및 데이타함수 

CHAR(number)

- 코드 번호에 해당되는 문자를 반환합니다.

CLEAN(text)

- 인쇄할 수 없는 문자를 텍스트에서 모두 삭제합니다. 

CODE(text)

- 텍스트의 첫째 문자에 대한 숫자 코드를 반환합니다.

CONCATENATE (text1,text2,...)
- 여러 문자열 항목을 한 문자열로 합칩니다.

WON(number,decimals)

- 숫자를 텍스트 형식으로 변환하고 통화 기호를 적용하는 방법을 설명합니다.

EXACT(text1,text2)

- 두 문자열을 비교하여 정확하게 일치하면 TRUE를 반환하고 일치하지 않으면 FALSE를 반환합니다.

FIND(find_text,within_text,start_num)

- FIND 함수는 다른 텍스트 문자열(within_text)에서 텍스트 문자열(find_text)을 찾아서 within_text의 첫째 문자에서 find_text의 시작 위치 번호를 반환합니다.

FIXED(number,decimals,no_commas)

- 수를 지정된 자릿수에서 올림하여, 마침표와 쉼표를 사용하여 십진수 서식으로 지정하고, 결과를 텍스트로 표시합니다.

LEFT(text,num_chars) | LEFTB(text,num_bytes)

- LEFT는 지정한 문자 수에 따라 텍스트 문자열의 첫 문자부터 원하는 수 만큼의 문자를 반환합니다.

LEN(text)

LOWER(text) | UPPER(text) 

- 텍스트 모두를 t소문자, 대문자로 변환합니다.

MID(text,start_num,num_chars)

PHONETIC(reference)

- 텍스트에서 윗주 문자를 추출합니다.

PROPER(text)

- 단어의 첫째 문자와 영문자가 아닌 문자 다음에 오는 영문자를 대문자로 변환합니다. 나머지 문자들은 소문자로 변환합니다.

REPLACE(old_text,start_num,num_chars,new_text)

- REPLACE는 지정한 문자 수에 따라 문자열의 일부를 다른 문자열로 바꿉니다.

REPT(text,number_times)

- 텍스트를 지정한 횟수만큼 반복합니다. REPT를 사용하여 여러 개의 문자열 인스턴스로 셀을 채울 수 있습니다.

RIGHT(text,num_chars) | RIGHTB(text,num_bytes)

- RIGHT는 지정한 문자 수에 따라 텍스트 문자열의 마지막 문자부터 지정된 개수의 문자를 반환합니다.

SEARCH(find_text,within_text,start_num) | SEARCHB(find_text,within_text,start_num)

- SEARCH는 start_num부터 시작하여 특정 문자 또는 텍스트 문자열이 처음 발견되는 문자의 위치를 반환합니다. SEARCH를 사용하여 또 다른 텍스트 문자열 안에서 문자 또는 텍스트 문자열의 위치를 찾습니다. 그러면 MID 또는 REPLACE 함수를 사용하여 텍스트를 변경할 수 있습니다.

SUBSTITUTE(text,old_text,new_text,instance_num)
- 문자열에서 old_text를 new_text로 바꿉니다. 문자열의 특정 텍스트를 바꾸려면 SUBSTITUTE를 사용합니다. 문자열의 특정 위치에 있는 텍스트를 바꾸려면 REPLACE를 사용합니다.

T(value)

- value가 참조하는 텍스트를 반환합니다.

TEXT(value,format_text)
- 값을 지정한 표시 형식의 텍스트로 변환합니다.

TRIM(text)

- 단어 사이에 있는 한 칸의 공백을 제외하고 텍스트의 공백을 모두 삭제합니다. 

VALUE(text)

- 텍스트 문자열을 숫자로 변환합니다.


 조회함수

ADDRESS(row_num,column_num,abs_num,a1,sheet_text)

- 주어진 행과 열 번호를 가지고 셀 주소를 나타내는 텍스트를 구합니다.

- abs_num : 1 또는 생략 절대 행과 열, 2 절대 행, 상대 열, 3 상대 행, 절대 열, 4 상대 행과 열 

AREAS(reference)

- 참조 영역에 있는 영역 수를 반환합니다. 영역은 인접한 셀의 범위 또는 단일 셀입니다.

CHOOSE(index_num,value1,value2,...)
- index_num을 사용하여 인수 값 목록에서 값을 반환합니다. CHOOSE 함수를 사용하여 29개까지의 값 중에서 인덱스 번호를 기준으로 한 개의 값을 선택할 수 있습니다.

COLUMN(reference) | ROW(reference)

- 주어진 참조의 열,열 번호를 반환합니다.

COLUMNS(array) | ROWS(array)

- 배열이나 참조에 들어 있는 열 ,행 수를 반환합니다.

HYPERLINK(link_location,friendly_name)

GETPIVOTDATA(data_field,pivot_table,field1,item1,field2,item2,...)

HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
INDEX(array,row_num,column_num)

INDIRECT(ref_text,a1)
LOOKUP(lookup_value,table_array,row_index_num,range_lookup)

MATCH(lookup_value,lookup_array,match_type)

OFFSET(reference,rows,cols,height,width)

TRANSPOSE(array)
- 세로 셀 범위를 가로 범위로, 가로 셀 범위를 세로 범위로 바꾸어 반환합니다.

RTD(ProgID,server,topic1,[topic2],...)

 
외부함수 

SQL.REQUEST(connection_string,output_ref,driver_prompt,query_text,col_names_logical)

- SQL.REQUEST 함수는 외부 데이터 원본과 연결하여 워크시트에서 쿼리를 실행한 다음 매크로 프로그래밍을 사용하지 않고 결과를 배열로 표시합니다.

ex) SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, "Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)


정보함수 

CELL(info_type,reference)
- 참조 범위에서 첫째 셀의 서식, 위치 또는 내용에 대한 정보를 반환합니다.

- info_type

"address" 텍스트로 참조 영역에 있는 첫째 셀의 참조를 반환합니다. 
"col" 참조 영역에 있는 셀의 열 번호를 반환합니다. 
"color" 음수에 대해 색으로 서식을 지정한 셀에 대해서는 1, 그렇지 않은 셀에 대해서는 0을 반환합니다. 
"contents" 참조 영역에 있는 왼쪽 위 셀의 수식이 아닌 값을 반환합니다. 
"filename" 텍스트로 참조가 들어 있는 파일의 전체 경로를 포함한 파일 이름을 반환합니다. 참조가 들어 있는 워크시트를 저장하지 않은 경우에는 빈 텍스트("")를 반환합니다. 
"format" 셀의 숫자 서식에 해당하는 텍스트 값입니다. 여러 숫자 서식에 대한 텍스트 값은 아래 표에 나와 있습니다. 음수에 대해 색으로 서식을 지정한 셀에 대해서는 텍스트 값의 끝에 "-"를 반환합니다. 양수나 모든 값에 괄호로 서식을 지정한 셀에 대해서는 텍스트 값의 끝에 "0"을 반환합니다. 
"parentheses" 양수 또는 모든 값에 괄호로 서식을 지정한 셀에 대해서는 1, 그렇지 않은 셀에 대해서는 0을 반환합니다. 
"prefix" 셀의 "레이블 접두어"에 해당하는 텍스트 값으로 셀이 왼쪽 맞춤의 텍스트를 포함하면 작은 따옴표(')를, 오른쪽 맞춤의 텍스트를 포함하면 큰 따옴표(")를, 가운데 맞춤의 텍스트를 포함하면 캐럿(^)을, 양쪽 맞춤 텍스트를 포함하면 백슬래시(\)를, 그 밖의 경우는 빈 텍스트("")를 반환합니다. 
"protect" 셀이 잠겨 있지 않으면 0을, 잠겨 있으면 1을 반환합니다. 
"row" 참조 영역에 있는 셀의 행 번호를 반환합니다. 
"type" 셀의 데이터 형식에 해당하는 텍스트 값으로 셀이 비어 있으면 "b"를, 텍스트 상수를 포함하면 "l"을, 그 밖의 경우에는 "v"를 반환합니다. 
"width" 정수로 반올림한 셀의 열 너비를 반환합니다. 열 너비의 각 단위는 기본 글꼴 크기로 지정된 문자 하나의 너비와 같습니다. 


 INFO(type_text)

- 현재 사용하고 있는 운영 체제에 대한 정보를 반환합니다.

- type_text

"directory" 현재 디렉터리나 폴더의 경로입니다. 
"memavail" 사용할 수 있는 메모리 용량(바이트 단위)입니다. 
"memused" 데이터에 사용되는 메모리 용량입니다. 
"numfile" 열려 있는 통합 문서의 활성 워크시트 수입니다. 
"origin" "$A:"로 시작하는 텍스트로 표시되는 A1 스타일의 절대 참조입니다. Lotus 1-2-3 릴리스 3.x와의 호환을 위한 것입니다. 현재 위치에 따라 창에서 맨 위 가장 왼쪽에 표시된 셀에 대한 셀 참조를 반환합니다. 
"osversion" 현재 운영 체제의 버전을 텍스트로 나타냅니다. 
"recalc" 현재의 재계산 모드를 "자동" 또는 "수동"으로 반환합니다. 
"release" Microsoft Excel의 버전을 텍스트로 나타냅니다. 
"system" 운영 체제의 이름:
Macintosh = "mac"
Windows = "pcdos"  
"totmem" 사용 중인 메모리를 포함한 메모리의 총 용량(바이트 단위)입니다. 


ISBLANK(value)
ISERR(value) | ISERROR(value)
ISLOGICAL(value)
ISNA(value)
ISREF(value)
ISNUMBER(value) | ISTEXT(value) | ISNONTEXT(value)

ISEVEN(number) | ISODD(number)
- 숫자가 짝수, 홀수이면 TRUE를 반환하고, 짝수, 홀수이면 FALSE를 반환합니다.

N(value)

- 숫자로 변환된 값을 표시합니다.

TYPE(value)

- 값의 유형을 구합니다. 특정 셀의 값 유형에 따라 함수 실행이 달라질 때 TYPE 함수를 사용합니다. 

- value type : 숫자 1, 텍스트 2, 논리값 4, 오류값 16, 배열 64

 
논리함수

AND(logical1,logical2, ...)
- 인수가 모두 TRUE이면 TRUE를 반환하고, 인수들 중 하나라도 FALSE이면 FALSE를 반환합니다.

- IF(AND(1<A3, A3<100)

OR(logical1,logical2,...)

- 인수 중 하나가 TRUE이면 TRUE를, 모든 인수가 FALSE이면 FALSE를 반환합니다.

TRUE( ) | FALSE( )

- 논리값 TRUE, FALSE를 반환합니다

IF(logical_test,value_if_true,value_if_false)
- IF(A2>89,"A",IF(A2>79,"B", IF(A2>69,"C",IF(A2>59,"D","F"))))

NOT(logical)
- 인수 값의 역을 표시합니다. 값이 특정 값과 같지 않은지 확인할 때 NOT을 사용합니다.

 
데이타베이스함수

DAVERAGE(database,field,criteria) 
- 목록 또는 데이터베이스의 열에서 지정한 조건에 맞는 값의 평균을 계산합니다.

- database : 데이터베이스나 목록으로 지정할 셀 범위로서 데이터베이스는 레코드(관련 정보 행)와 필드(데이터 열)로 이루어진 관련 데이터 목록입니다. 목록의 첫째 행에는 각 열의 레이블이 있습니다.

- field : 함수에 사용되는 열을 지정합니다. "나이" 또는 "수확량"처럼 열 레이블을 큰따옴표로 묶어 입력하거나 첫째 열을 1, 둘째 열을 2 등 목록 내의 열 위치를 나타내는 숫자를 큰따옴표 없이 입력합니다.

- criteria : 지정한 조건이 있는 셀 범위입니다. 열 조건 지정하는 최소한의 열 레이블 하나와 그 아래에 최소한 한 셀이 포함되면 그 범위를 criteria 인수로 사용할 수 있습니다.

DCOUNT(database,field,criteria) | DCOUNTA(database,field,criteria)

- 목록 또는 데이터베이스의 열에서 지정한 조건에 맞는 숫자가 있는 셀의 개수를 구합니다. field 인수는 선택 사항입니다. field 인수를 생략하면 데이터베이스에서 조건에 맞는 모든 레코드 개수가 구해집니다.

DGET(database,field,criteria)
- 목록 또는 데이터베이스의 열에서 지정한 조건에 맞는 하나의 값을 추출합니다.

DMAX(database,field,criteria) | DMIN(database,field,criteria) 

DSUM(database,field,criteria)

DPRODUCT(database,field,criteria)

- 목록이나 데이터베이스의 열에서 지정한 조건에 맞는 값을 곱합니다.

 

통계함수

 

 AVERAGE(number1,number2,...)  | AVERAGEA(value1,value2,...)

COUNT(value1,value2,...) | COUNTA(value1,value2,...)
- 인수 목록에서 숫자가 포함된 셀과 숫자의 개수를 계산합니다. COUNT 함수를 사용하면 숫자 범위 또는 배열 내의 숫자 필드에 있는 항목 수를 구할 수 있습니다.

COUNTBLANK(range)

COUNTIF(range,criteria)

LARGE(array,k) | SMALL(array,k)

데이터 집합에서 k번째로 큰,작은 값을 구합니다. 이 함수를 사용하여 상대 순위 값을 선택할 수 있습니다. 

- Array :  k번째 큰 값을 결정할 데이터 배열 또는 범위입니다.
- K :  데이터의 배열이나 셀 범위에서 가장 큰 값과의 상대 순위입니다.
MAX(number1,number2,...) MAXA(value1,value2,...)

MEDIAN(number1,number2,...)
- 주어진 수들의 중간값을 반환합니다. 중간값은 수 집합에서 중간에 있는 수입니다. 즉, 수의 반은 중간값보다 큰 값을 가지고 나머지 반은 중간값보다 작은 값을 가집니다.

MIN(number1,number2,...) MINA(value1,value2,...)

MODE(number1,number2,...)
- 배열이나 데이터 범위에서 가장 빈도수가 높은 값을 반환합니다. MODE도 MEDIAN과 마찬가지로 대표값입니다.

Posted by marryjane
|

문자열을 참조가능하게 해주는 함수
=indirect(a1 & b1 & "!f1")

'excel' 카테고리의 다른 글

[함수]문자열자르기 - SEARCH  (0) 2008.11.11
[함수]중복된 목록에서 데이터 불러오기  (0) 2008.10.02
[함수]파일 및 시트명  (0) 2008.09.30
[함수]엑셀함수  (0) 2008.09.30
[메크로]레이아웃 컨트롤  (0) 2008.08.06
Posted by marryjane
|

Sub changeFile()
    For i = 8 To ActiveWorkbook.Sheets.Count
        Worksheets(i).Select
        changeSheet (i)
    Next i
   
    'makeIndex
    deleteHeader
End Sub

Sub makeIndex()
    Worksheets(2).Select
   
    For i = ActiveWorkbook.Sheets.Count To 4 Step -1
        Rows("2:2").Select
        Selection.Copy
        Selection.Insert Shift:=xlDown
       
        Range("F3").Activate
        ActiveCell.FormulaR1C1 = Worksheets(i).Name
    Next i
End Sub

Sub changeSheet(idx As Integer)
   
    '레이아웃 편집
    Rows("1:2").Select
    With Selection
        .MergeCells = False
    End With
    Columns("A:A").Select
    Range("A2").Activate
    Selection.Delete Shift:=xlToLeft
    Columns("B:C").Select
    Selection.Insert Shift:=xlToRight
    Columns("F:F").Select
    Range("F3").Activate
    Selection.Insert Shift:=xlToRight
    Columns("I:J").Select
    Range("I3").Activate
    Selection.Insert Shift:=xlToRight
    Columns("M:Q").Select
    Selection.Insert Shift:=xlToRight
    Columns("M:Q").Select
    Selection.ColumnWidth = 2.3
    Range("B3").Select
    '속성정보 편집
    Columns("G:G").Select
    Range("G5").Activate
    Selection.Replace What:="X", Replacement:="C", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="9", Replacement:="N", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("B:C").Select
    Selection.ColumnWidth = 3
    Columns("E:E").Select
    Selection.Copy
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Columns("F:F").Select
    Selection.Delete Shift:=xlToLeft
    Columns("A:A").Select
    Selection.ColumnWidth = 3
    Columns("B:C").Select
    Selection.ColumnWidth = 6
    Columns("D:E").Select
    Selection.ColumnWidth = 20
    Columns("F:K").Select
    Selection.ColumnWidth = 3
    Columns("L:L").Select
    Selection.ColumnWidth = 35
    Columns("R:R").Select
    Selection.ColumnWidth = 15
   
    '비고필드 자동줄바꿈
    Columns("R:R").Select
    Range("R2").Activate
    With Selection
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
   
    '첫번째시트에서 타이틀 카피
    Worksheets(1).Select
    Rows("1:7").Select
    Range("A7").Activate
    Selection.Copy
    Worksheets(idx).Select
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    '타이틀 편집
    Range("E2:H2").Activate
    ActiveCell.FormulaR1C1 = "재무"
    Range("E3:H3").Activate
    ActiveCell.FormulaR1C1 = ""
    Range("A9").Select
    Selection.Copy
    Range("A9").Select
    Range("E4:H4").Select
    ActiveSheet.Paste
    Range("L4").Select
    ActiveCell.FormulaR1C1 = ""
    Range("R2").Select
    ActiveCell.FormulaR1C1 = "재무"
    Range("R3").Select
    ActiveCell.FormulaR1C1 = ""
    Range("R4").Select
    ActiveCell.FormulaR1C1 = Worksheets(idx).Name
    Rows("8:10").Select
    Selection.Delete Shift:=xlToUp
   
    Columns("A:A").Select
    Range("A1").Activate
    With Selection.Font
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
    End With
    ActiveWindow.Zoom = 85
   
End Sub

Sub deleteHeader()
    For i = 8 To ActiveWorkbook.Sheets.Count
        Worksheets(i).Select
        Rows("8:21").Select
        Selection.Delete Shift:=xlToUp
       
        Range("A8").Select
        ActiveCell.FormulaR1C1 = "1"
    Next i
End Sub

Sub copyValue()
'값만 copy
    Range("A600").Activate
     Cells.Select
    Selection.Copy
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
    Range("s1").Select
End Sub


Sub copyValueSheet()
    For i = 8 To ActiveWorkbook.Sheets.Count
        Worksheets(i).Select
        copyValue
    Next i
End Sub

Sub all()
    For i = 8 To ActiveWorkbook.Sheets.Count
        Worksheets(i).Select
        copyValue
        editForm
    Next i
End Sub

Sub editSheet()
    For i = 8 To ActiveWorkbook.Sheets.Count
        Worksheets(i).Select
        editForm
    Next i
End Sub


Sub editForm()
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:K").Select
    Selection.Delete Shift:=xlToLeft
    Columns("H:H").Select
    Selection.Delete Shift:=xlToLeft
    Columns("I:I").Select
    Selection.Delete Shift:=xlToLeft
    Columns("J:J").Select
    Selection.Delete Shift:=xlToLeft
    Columns("s:S").Select
    Selection.Delete Shift:=xlToLeft
    rowNumbering
End Sub

Sub rowNumbering()
'마지막 row까지
    For i = 8 To Range("A8").End(xlDown).Row
        Range("A" & i).Activate
        ActiveCell.FormulaR1C1 = i - 7
    Next i
End Sub

'formula xls 에서 문서ID, SEQ 와 MSGID, SEQ 를 가져와 LIST 로 만드는 함수
'파일다이얼로그창에서 적용할 파일을 선택해서 동작시킨다.
Sub xlsSeq()
    Dim Files As Variant
    Dim fileX As Variant
    Dim wb As Workbook
    Dim xlsSheet As Worksheet
    Dim listSheet As Worksheet

    Set listSheet = Worksheets("ID_SEQ_LIST_B3")
    
    Files = Application.GetOpenFilename(filefilter:="total Files(*.*),*.*", Title:="파일선택", MultiSelect:=True)
    For Each fileX In Files
        Set wb = Workbooks.Open(fileX)
        
        For m = 8 To wb.Sheets.Count
            Set xlsSheet = wb.Worksheets(m)
            Call getXlsSEQ(xlsSheet, listSheet)
        Next m
'파일 저장후 close
        wb.Save
        wb.Close
    Next fileX
    
End Sub


Private Sub getXlsSEQ(xlsWs As Worksheet, listWs As Worksheet)

    Dim xlsID  As String
    Dim msgID As String
    Dim listLastRow, xlsLastRow As Integer
    xlsLastRow = xlsWs.Range("A65535").End(xlUp).Row
    
    If Not (IsError(xlsWs.Range("P2").Value)) Then
        xlsID = xlsWs.Range("P2").Value
        msgID = xlsWs.Range("P4").Value
        
        '마지막 row까지
        For i = 8 To xlsLastRow
           listLastRow = listWs.Range("A65535").End(xlUp).Row + 1
           listWs.Cells(listLastRow, 1).Value = msgID
           listWs.Cells(listLastRow, 2).Value = xlsWs.Range("A" & i).Value
           listWs.Cells(listLastRow, 3).Value = xlsID
           listWs.Cells(listLastRow, 4).Value = xlsWs.Range("B" & i).Value
        Next i
    End If
End Sub


Sub editFormatIoCls()
    Dim Files As Variant
    Dim fileX As Variant
    Dim wb As Workbook
    
    Files = Application.GetOpenFilename(filefilter:="total Files(*.*),*.*", Title:="파일선택", MultiSelect:=True)
    For Each fileX In Files
        Set wb = Workbooks.Open(fileX)
        
        For m = 8 To wb.Sheets.Count
            wb.Worksheets(m).Select
            wb.Worksheets(m).Columns("M:M").Select
            Selection.Copy
'copy 한 columns 를 붙여넣기
            wb.Worksheets(m).Columns("T:T").Select
            Selection.Insert Shift:=xlToRight
            wb.Worksheets(m).Columns("M:M").Select
            Selection.Delete Shift:=xlToLeft
            wb.Worksheets(m).Columns("Q:Q").Select
            Selection.Insert Shift:=xlToRight
        Next m
        wb.Save
        wb.Close
    Next fileX
End Sub


Sub addFormula()
     Dim Files As Variant
    Dim fileX As Variant
    Dim wb As Workbook
    
    Files = Application.GetOpenFilename(filefilter:="total Files(*.*),*.*", Title:="파일선택", MultiSelect:=True)
    For Each fileX In Files
        Set wb = Workbooks.Open(fileX)
        
        For m = 8 To wb.Worksheets.Count
            wb.Worksheets(m).Select
            wb.Worksheets(m).Range("P2").Formula = "=VLOOKUP(P4, [000.0.macro.xls]ID_SEQ_LIST_B3!$E:$F, 2, FALSE)"
            Call addFormulaXlsSEQ(wb.Worksheets(m))
        Next m
        wb.Save
        wb.Close
    Next fileX
End Sub

Sub addFormulaXlsSEQ(xlsWs As Worksheet)
    Dim xlsLastRow As Integer
    
    If Not (IsError(xlsWs.Range("P2").Value)) Then
        With xlsWs
            xlsLastRow = Range("A65535").End(xlUp).Row
            Columns("E:E").Select
            Selection.Copy
            Selection.Insert Shift:=xlToRight
            Columns("E:E").Select
            Selection.Replace What:="_", Replacement:="", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
            Range("B8").Select
            Application.CutCopyMode = False
'셀에 수식넣기
            ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[3],C30:C31, 2, FALSE)"
'Range 에 수식을 AutoFill
            If xlsLastRow > 8 Then
                Selection.AutoFill Destination:=Range("B8:B" & xlsLastRow)
            End If
            Range("B8:B" & xlsLastRow).Select
            Selection.Copy
            Range("B8").Select
'copy 한 selection 을 선택붙여넣기로 값만 넣기
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            Columns("B:B").Select
'Find 로 문자열 #N/A 를 찾아 "" 로 replace 하기
            Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
            Columns("E:E").Select
            Selection.Delete Shift:=xlToLeft
        End With
    Else
        xlsWs.Range("A8").Select
    End If
End Sub


'시트명 (msgid) 변경
Sub changeSheetsName()
    Dim Files As Variant
    Dim fileX As Variant
    Dim wb As Workbook
    
    Files = Application.GetOpenFilename(filefilter:="total Files(*.*),*.*", Title:="파일선택", MultiSelect:=True)
    For Each fileX In Files
        Set wb = Workbooks.Open(fileX)
        Call changeSheetName(wb)
        Call changeMsgId(wb)
        wb.Save
        wb.Close
    Next fileX

End Sub

Private Sub changeSheetName(wb As Workbook)
    For i = 1 To wb.Worksheets.Count
        If i < 8 Then
            If i = 1 Or i = 6 Or i = 7 Then
                With wb.Worksheets(i)
                    .Select
                    Columns("F:F").Select
                    Selection.Replace What:="B30", Replacement:="B3", LookAt:=xlPart, _
                        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                        ReplaceFormat:=False
                End With
            End If
        Else
            wb.Worksheets(i).Name = Left(wb.Worksheets(i).Name, 2) & Right(wb.Worksheets(i).Name, 4)
        End If
    Next i
End Sub


Private Sub changeMsgId(wb As Workbook)
    For i = 8 To wb.Worksheets.Count
        With wb.Worksheets(i)
            .Select
'Formula 와 FormulaR1C1 의 차이점. Formula 로 수식을 넣을 때, 따옴표처리는 Chr(34)
            Range("P4").Formula = "=REPLACE(CELL(" & Chr(34) & "filename" & Chr(34) & ",A1),1,FIND(" & Chr(34) & "]" & Chr(34) & ",CELL(" & Chr(34) & "filename" & Chr(34) & ",A1))," & Chr(34) & "" & Chr(34) & ")"
        End With
    Next i
End Sub

시트 카피
Sheets("B200003").Select
Sheets("B200003").Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = "B200004"
시트명 변경
Sheets("B200003").Name = "ABC"

Posted by marryjane
|