전체 글 212

IMAGE 함수 (Microsoft 365 Excel 신규 호환함수)

【 함수 요약 】 Microsoft 365 Excel에 추가된 IMAGE 함수를 구버전에서 사용할 수 있게 EGTools에서 지원하는 호환함수 인터넷에 올려진 이미지 URL이나 컴퓨터에 저장된 파일명으로 이미지를 삽입하는 함수 이 함수는 EGTools 추가기능에서 지원하는 함수입니다. 원본함수 설명 : https://support.microsoft.com/ko-kr/office/image-%ED%95%A8%EC%88%98-7e112975-5e52-4f2a-b9da-1d913d51f5d5 원본 함수와 차이점 : 원본은 인터넷 URL만 삽입할 수 있으나 호환함수는 PC내 파일도 삽입 원본은 "BMP, JPG/JPEG, GIF, TIFF, PNG, ICO, WEBP" 형식만 지원하나 호환함수는 Excel에서 ..

VBA UDF 결과 배열을 Sheet에 출력하기

Excel 에 도입된 신규 함수중 일부는 Dynamic Array 결과를 Sheet에 출력하는데, UDF에서 이와 비슷한 기능을 할 수 있도록 하는 방법입니다. 장점 : 함수 결과가 배열인 경우 바로 Sheet에 쓸 수 있다. 단점 : 결과 범위가 축소된 경우 줄어든 부분에 대해서 값을 지울 수는 없다. -> 사용상 주의하지 않은 경우 변경된 결과에 이전 결과의 잔상이 남음... (현재 EGTools에는 완벽하지는 않지만 기존 자료를 자동으로 지울 수 있도록 적용되어 있습니다.) 기본적인 개념은 아래 출처에서 착안하여 시행착오를 거쳐 정리한 결과입니다. https://stackoverflow.com/a/37344343 처리 과정은 대강 이렇게 진행됩니다. 1. Global 변수에 결과를 전달할 배열 선언..

Excel - VBA 2023.01.17

SAMPLE 함수

【 함수 요약 】 지정하는 대상 범위에서 지정하는 숫자만큼 무작위 샘플링 추출 이 함수는 EGTools 추가기능에서 지원하는 함수입니다. 【 적용 버전 】 Windows용 : 조건없는 샘플링은 모든버전, 조건을 사용하는 샘플링은 Excel 2007~ 【 함수 구문 】 = SAMPLE ( Search_range , Count , [Unique] , [Include ] ) 【 함수 인수 】 인수명 옵션 기본값 설 명 Search_range 필수 없음 대상범위 또는 Array Count 필수 없음 샘플을 추출할 수 (>0) Unique 선택 False 중복금지 여부, 기본값은 False로 중복가능, True로 지정시 중복없이 출력 Include 선택 없음 조건을 계산하여 참/거짓으로 판정할 수 있는 배열수식 ..

IsTime() 셀 값이 시간 값인지 어떻게 확인할 수 있을까?

VBA로 셀값의 형태가 어떤 것인지 판단하기 위해서 여러가지 방법을 사용합니다만, 시간값만 있을 경우 판단하기 애매한 경우가 있습니다. 입력된 값이 어떤 것이고 셀서식이 어떻게 되어 있느냐에 따라 달라지는데, 아래의 코드와 예제 결과를 참고해 보세요. Function IsDateValue(Cell As Range) IsDateValue = IsDate(Cell.Value) End Function Function IsString(Cell As Range) IsString = TypeName(Cell.Value) = "String" End Function Function IsNumericValue(Cell As Range) IsNumericValue = IsNumeric(Cell.Value) End Func..

Excel - VBA 2023.01.11

Ribbon Menu - CrossTab 기능

□ CrossTab 수직형으로 작성된 일반적인 Data 표에 대해서 집계표형식으로 변경하는 기능 원본영역과 표의 제목줄을 지정하고, 집계표형식에서 행머리에 놓을 열과, 열머리에 놓을 열, 표본문에 놓을 열을 선택합니다. 행머리와 열머리는 여러 열을 열번호로 지정할 수 있으며, 표본문은 하나의 열번호만 지정할 수 있습니다. 열본문으로 지정한 열은 첫번째 자료의 자료의 셀형식에 따라 아래와 같이 집계됩니다. 1. 숫자형 자료 : 행머리, 열머리가 같은 것끼리 합산 2. 날짜시간 자료 : 첫번째 셀의 셀서식으로 표시되는 문자열을 쉼표(,)로 연결 3. 나머지 자료 : 일반 문자열로 간주하고 그대로 쉼표(,)로 연결

EGTools - 기능 2023.01.11

TEXTJOINIF 함수

【 함수 요약 】 조건에 만족하는 검색범위의 값을 하나의 문자열로 연결 조건은 Filter()함수에서 조건을 지정하는 방법과 같은 방식으로 지정 배열함수로 함수 입력할 때에는 Ctrl+Shift+Enter로 입력해야 함 이 함수는 EGTools 추가기능에서 지원하는 함수입니다. 【 적용 버전 】 Windows용 : Excel 2007~ 【 함수 구문 】 = TEXTJOINIF ( Include , Search_Range , [Delimiter] , [Unique] ) 【 함수 인수 】 인수명 옵션 기본값 설 명 Include 필수 없음 참/거짓으로 판정할 수 있는 배열수식, 2개의 조건이 동시만족해야 할 때 (범위1=값1) * (범위2>값2) 2개의 조건중 하나만 만족해도 될 때 (범위1=값1) + (범..

VBA로 Add-In(추가기능) 자동 업데이트 하기

EGTools v3.5.0에 추가된 업데이트 기능의 VBA 소스입니다. DownloadFromURL함수는 여기를 참고하세요. 다운로드한 파일은 임시로 사용자의 Downloads 폴더에 저장했다가 복사가 완료되면 삭제합니다. 사용중인 파일을 덮어씌우기 위해서 Add-In을 읽기 전용 상태로 바꾸는 것이 필요합니다. 사용자가 작성중인 파일이 있을 경우가 있어 Excel의 재시작은 사용자가 하도록 합니다. Public Const MyAddIn = "EGTools" Public LastDocURL As String Sub UpdateAddIn() Dim NewFile As String Dim ThisFullPath As String If Not ThisWorkbook.IsAddin Then Exit Sub Th..

Excel - VBA 2023.01.06

URL을 지정하여 File을 Download하기

인터넷에 존재하는 파일을 다운로드 하기 위하여 아래와 같은 코드를 사용할 수 있습니다. 다운로드할 대상의 URL과 Download할 Path와 이름이 포함된 FullName을 지정하여 다운로드 합니다. 이 기능은 Add-In인 EGTools 추가기능에 자동업데이트 기능을 추가할 때 사용하였습니다. Binary 파일을 ADODB.Stream으로 다운로드 하는 방식입니다. 다운로드가 되면 새로 생성된 파일의 FullName을 반환하고, 실패하면 빈문자열(vbNullString)을 반환합니다. Function DownloadFromURL(FileUrl As String, NewFullName As String) Dim oXMLHTTP As Object, oStream As Object On Error GoTo..

Excel - VBA 2023.01.06

Ribbon Menu에 토글버튼 사용하기

리본메뉴에서 아래처럼 [날짜 선택] On/Off 되는 토글 버튼을 사용하는 방법입니다. 선택이 되어 On 상태이면 바탕색이 짙은 회색으로 변하고, 선택이 해제되어 Off 상태이면 바탕색이 사라집니다. 리본메뉴 XML에서는 이렇게 정의합니다. 토글버튼을 클릭했을 때 할일은 OnAction을 통해서 호출하고, 토글버튼의 상태를 업데이트 하는 것은 getPressed를 통해서 진행합니다. CallBack 함수는 이렇게 작성합니다. Public DTEnabled As Boolean '// Date Picker용 '// Ribbon Menu에서 "날짜입력" toggle button "onAction" 처리 Sub rbnDTPicker(control As IRibbonControl, pressed As Boolea..

Excel - VBA 2023.01.06

Ribbon Menu에서 매크로에 인수 전달하기

일반 프로시저를 만들어 두고 공통으로 사용하기 위해서 인수를 사용한 다음 필요에 따라 인수를 이용하여 동작 방식을 변경하는 것을 할 수 있습니다. 그런데, Ribbon Menu에서 CallBack 함수를 호출할 때 인수를 어떻게 전달할까요? 예전에는 아래처럼 Ribbon Menu에서 각각 별도로 호출을 하고, CallBack 함수에서 공통 프로시저에 인수를 넣어 호출하는 방식을 사용했습니다. Ribbon Menu의 XML 부분 CallBack 함수 부분 Public Sub rbnPasteVisibleAll(control As IRibbonControl) ' 보이는 셀에 복사 PasteToVisibleCells xlPasteAll End Sub Public Sub rbnPasteVisibleValues(c..

Excel - VBA 2023.01.05