전체글 1069

연속된 숫자는 ~로 표현하기

한 셀에 1,2,3,6,7,9 라는 숫자가 있으면1~3,6~7,9 로 표현하는 매크로다.버튼식 매크로와 사용자정의함수로 만들었다.버튼식을 만들면 함수는 버튼식에서 변경만 하면 되니까.동일한 수식이 여러개 들어가고 배열을 막 붙였다. 더 깔끔한 코드가 있을 것 같은데...다음은 작업 일지. 1. 셀의 숫자를 콤마 기준으로 나눈다.2. 연속된 숫자인지 판단하여 ~로 묶어줌 Sub Macro() Dim rngData As Range, rngcell As Range Dim arrNum As Variant Dim i As Integer, j As Integer, k As Integer Dim ValArr() As Integer Dim strText() As String '숫자영역 설정 및 기존자료 삭제 Set r..

VB(A) 2015.03.26

자동필터 - 거래명세표 작성

시트1에는 데이터가 있고 시트2에는 거래명세서 서식이 있다. 거래명세서에서 거래처셀에 거래처를 입력하면 시트1의 거래처와 일치하는 데이터를 불러온다. 1. 병합셀을 풀어 작업이 용이하도록 한다. 2. 거래처 값을 기준으로 자동필터를 실행하여 해당값을 불러온다. 3. 거래처 데이터를 불러온 후 다시 셀을 병합한다. 4. 거래처와 일치하는 값이 없을 땐 on error on resume 과 err.number 구문을 이용하여 에러처리를 하였다. 5. 코드 작성 후 Private Sub Worksheet_Change(ByVal Target As Range) 를 이용하여 코드를 연결해주었다. Sub Macro() Dim 표 As Range Dim 시트1 As Worksheet, 시트2 As Worksheet D..

VB(A) 2015.03.21

화학식에서 C 의 원자의 합

화학식이 있고 이 중 C의 원자값만 합계를 내는 사용자정의함수화학식에서 원소만 뽑아내는 것이 포인트. 1. 원소별로 분리를 하고2. C만 포함된 원소를 골라내서3. C의 개수를 각각 더한다. Function findC(Chemical As String) As Integer Dim i As Integer, j As Integer Dim strText As String, strChar As String Dim arrC() As String Dim sumArr As Integer '원소별 분리 For i = 1 To Len(Chemical) strChar = Mid(Chemical, i, 1) '알파벳이 있고 글자가 모이면 원소 분리 If Asc(strChar) >= 65 And Len(strText) The..

VB(A) 2015.03.19

영어문장 섞기

영어로 된 문장이 있고 이것을 섞는 사용자정의 함수이다. 간단하지만 변수가 의외로 많이 필요한 매크로 1. 문장에 있는 ,나 . 와 같은 특수문자를 없애고 배열에 넣는다. 2. 배열에 난수를 추가하여 섞는다. Function jnWord(rngWord As String) As String Dim cntArr As Integer Dim i As Integer, j As Integer Dim arrWord As Variant Dim temp As Variant '문장에 붙은 특수문자 제거 rngWord = Replace(rngWord, ",", "") rngWord = Replace(rngWord, ".", "") '특수문자 제거한 문장을 분리하여 배열에 넣음 arrWord = Split(rngWord, "..

VB(A) 2015.03.18

다른 파일의 차트를 불러와 정렬하기

앞의 파일과 같은데 앞의 것은 이미지파일로 뺐다면 이번 작업은 별도의 시트를 만들어 차트를 가져오는 작업이다. 1. 각 파일의 각 시트를 순환하며 차트 생성 2. 시트에서 차트 생성이 완료되면 붙이고자 하는 시트로 잘라내서 붙이기 3. 5열씩 차트를 정렬 Option ExplicitSub mkChart() Dim openFiles As Variant, openFile As Variant, xlsFile As String Dim wrkSht As Worksheet Dim rngArea As Range, testArea As Range Dim intR As Integer, intC As Integer Dim i As Integer, cntR As Integer Dim chtData As Range Dim o..

VB(A) 2015.03.16

차트 생성 후 이미지 저장

하루하나 카페에 올라온 질문글. 학생이 300명 정도 있고 개인별로 차트 생성을 해야한다. 게다가 1인당 생성해야하는 차트는 총 두개. 작업일지는 다음과 같다. 1. 파일을 불러와서 각 시트를 순환하며 작업 2. 시트명이 과목별 시험 성적 또는 과목별 수행 등급일 때만 매크로 실행 3. 이름에 빈칸들이 있어서 밑에서 위로 올라가며 작업 4. 차트 폴더를 생성하고 각 차트들을 이미지로 저장 Option ExplicitSub mkChart() Dim openFiles As Variant, openFile As Variant, xlsFile As String Dim wrkSht As Worksheet Dim rngArea As Range, testArea As Range Dim intR As Integer, ..

VB(A) 2015.03.16

특정글자 색 바꾸기

엑셀에서 ctrl+F로 글자색을 바꾸려 하면 셀 전체의 글자색이 바뀐다. 이 코드는 원하는 글자의 색만 바꿔주는 코드다. Sub chnColor() Dim i As Integer, intT As Integer Dim rngArea As Range, rngCell As Range '글자 영역 설정 및 기존 서식 복귀 Set rngArea = Range("A1", Cells(Rows.Count, "A").End(xlUp)) With rngArea.Offset(, 1).Font .Bold = False .ColorIndex = 1 End With For Each rngCell In rngArea With rngCell '문장을 순환하며 글자색 변경 i = Len(.Value) intT = InStr(.Offs..

VB(A) 2015.03.14