목록vba (68)
rand(life)
Option Explicit Sub 순열조합_매크로() Dim 항목배열 As Variant, wf As WorksheetFunction Set wf = WorksheetFunction ' 엑셀 시트함수 Application.ScreenUpdating = False ' 기존자료 삭제 및 머릿글 Range("d1").CurrentRegion.Offset(1).Delete xlUp ' 항목 셀범위를 1차원 배열로 변경 하기 위한 작업 With Range("a2", Cells(Rows.Count, "a").End(xlUp)) 항목배열 = wf.Transpose(.Value) ' 가로세로 바꿈 If .Columns.Count > 1 Then ' 가로면 가로세로를 한번 더 바꿈 항목배열 = wf.Transpose(..
function myFunction() { var sht = SpreadsheetApp.getActive().getSheetByName("시트1"); for (var i = 50; i >= 1; i--) { var str = sht.getRange(i, 3).getValue(); if (str == "74Y" || str == "74N" || str == "77L" || str == "") { sht.deleteRow(i); } } } 엑셀과 비슷하지만 전혀 다른 google apps script를 공부할 필요를 조금씩 느끼고 있다. 여기저기 찾아보고 겨우 만든 것이 저 위의 코드 C열에 있는 각 셀값이 특정한 문자일때, 또는 빈칸일 때 행 전체를 삭제하는 코드이다. javascript 기반이라니, Vi..
Option Explicit Sub Jo_sort() Dim rD As Range Dim jList As Object Dim i As Long, iCol As Long 'Application.ScreenUpdating = False Set rD = Range("a1").CurrentRegion '데이터 범위 iCol = rD.Columns.Count Set jList = CreateObject("system.collections.sortedlist") With jList For i = 1 To rD.Rows.Count Step 2 Dim sT As String sT = rD.Cells(i, 1).Value & rD.Cells(i, 3).Value If Not .contains(sT) Then .Add s..
엑셀에서 매크로를 실행하여 특정 폴더안의 모든 워드 문서 중에서 본문에 특정한 단어가 있는지 검사한 후 해당 단어가 있는 문장과 문장의 첫단어가 있는 라인 수 해당 파일의 이름을 출력하는 매크로이다 VB편집기에서 도구 - 참조 클릭하고 Microsoft Word Object Library에 체크를 해야 작동한다. Option Explicit Sub macro() Dim WApp As Object, WDoc As Object, WDR As Object Dim ExR As Range, sPath As String Dim str2Find As String, myData As String, sFname As String, myfile As String Dim myline As Long Set ExR = Rang..
지식인 질문에 대한 답"한 시트에 여러 페이지가 있는데, 각 페이지를 별개의 시트로 나누는 방법"에 대한 문의였다. HpageBreak가 페이지 나누기니까, 그것을 기준으로 순환문을 돌리면 된다고 간단히 생각해서, 답변을 주려고 했는데예제 파일을 보니 시트 안에 글자만 있는 것이 아니라 도형과 차트들이 들어있었다문제는, 도형과 차트는 시트 복사를 하면 문자처럼 자동으로 같이 따라 오는 것이 아니라각 개체별로 따로 복사해서 위치를 조정해주어야한다는 점이었다. 그래서 작업의 순서를 다음과 같이 잡았다 1. 페이지나누기 갯수대로 원본시트복사하기2. 해당 각 페이지의 범위 설정 (eg. 2페이지는 15행~30행)3. 범위에 들지 않는 페이지는 삭제 (2페이지가 아닌 1~14, 31~끝은 삭제)4. 원본 시트에서..
지난 번에 쓴 글과 비슷한 내용인데 A처럼 되어있는 것을 B와 C열로 분리하는 작업이다. Option Explicit Sub macro()Dim r As RangeDim lc As LongDim s As StringDim bl As Boolean For Each r In Range("A1").EntireColumn.SpecialCells(2) Do lc = lc + 1 s = Mid(r, lc, 1) If Asc(s) = 32 Then bl = False ElseIf Asc(s) 122 Then bl = True End If Loop Until bl = True r(, 2) = Left(r, lc - 1) r(, 3) = Mid(r, lc) lc = 1 bl = False ..
예를 들어 아래와 같이 셀 하나에 한글, 영어가 이어서 나오는 경우, 한글은 지우고 영어만 남기려고 할때 값비싼, 일류의, 화려한 expensive, popular, and fashionable 영어 소문자의 아스키코드는 97에서 122까지라는 점을 이용한 방법이다. (출저: https://blog.naver.com/dowahn/130172409926) replace 함수도 이용했다. 워크시트함수의 replace나 '찾기바꾸기'의 replace와 약간 다르니 주의할 필요가 있다.replace(문자열, 찾을문자, 바꿀문자, 시작위치, 문자의길이) Sub checkhangul()Dim r As Range, intAsc As Long, sAll As String, i As LongFor Each r In Ra..
Scripting.Dictionary를 이용한 방법이다. 지식인에 올라온 질문에 대한 답으로 작성했다.(들어가려면 성인 인증이 필요하다)특정 시간이 3회 이상 등장한 경우, 해당 시간에 발생한 수량을 합산하고, 같은 수량이 특정 구간에 3회 이상 반복 등장할 경우, 그런 수량들을 모두 더하는 결과를 나타낸다. Scripting.Dictionary를 이용해서 3회 이상 등장하는 시간을 Key로, 해당 시간에 발생한 수량을 Item으로 더하는 방법은 이전에 빈도 순위 높은 문자, 숫자 찾기에서 사용했던 방법과 동일하다. If Va(iv, 1) >= ds And Va(iv, 1) = 3 Then iCount = iCount + (ak(i) * ai(i)) Next순환문을 이용해 item이 2이상이면 item의..