목록컴퓨터 (366)
rand(life)
셀안에 있는 특수문자만 제거하는 코드 지식인 답변에서 가져옴 Option Explicit Sub textchange() Dim c As Range Dim rSelect As Range Dim oReg As Object On Error Resume Next Set rSelect = Application.InputBox("영역 선택", "선택", Selection.Address, , , , , 8) If rSelect Is Nothing Then Exit Sub Set oReg = CreateObject("VBScript.RegExp") For Each c In rSelect.Cells If c.Value "" Then With oReg .Pattern = "[\\/:*?""|]" ''특수문자 추가 하시면 ..
순열 조합 매크로에 대해서는 지난번에 소개하였지만, 이번엔 약간 다른 경우이다. 출처는 여기이다. 보다시피, A그룹에서 하나, B그룹에서 하나, C그룹에서 하나, D그룹에서 하나씩만 꺼내와서 결과를 조합하는 것이다. 이것은 이전의 매크로를 가지고는 할 수 없는 작업이다. 아래와 같이 할수도 있을것이다. for i1 = 1 to 3 for i2 = 1 to 3 for i3 = 1 to 2 for i4 = 1 to2 Result = i1 & i2 & i3 & i4 next next next next 하지만 단점 두 개가 분명히 보인다. 일단 지금은 그룹이 4개이지만, 그룹이 100개가 된다면? 그리고, 각 그룹마다 요소의 갯수가 다르다. 다른 사람도 이런 고민을 했을텐데, 하면서 검색을 해보았는데, 바로 위..
핵심코드의 출처는 여기 이런 세 개의 파일이 있다고 하자. 그리고 이 세 개의 파일에 있는 데이터를 통합하여 아래와 같은 표를 완성해야한다고 하자. 왼쪽의 item이나 상단의 title이 파일마다 순서가 다르다. 그리고 모두 다 있는 것도 아니다. 이런 경우, 어떤 식으로 데이터를 모으겠는가? sumif, sumifs같은 것을 사용할 수도 있을 것이다. 그러나, 방금 말한 것처럼, item과 title의 구성 및 순서가 달라서 쉽지 않아보인다. 이런 경우 사용할 수 있는 것이 엑셀의 "통합" 기능이다. 데이터 탭에 있다. 이것을 누르면 이런 창이 뜨고, 여기서 참조 영역과 함수를 적절히 지정해주고 확인하면 된다. 그런데, 위의 표에서 보듯이 참조 영역이 불규칙적이어서, 일일이 파일을 열어서 확인을 해야한..
출처는 아래에. Option Explicit Sub SendEmailWithrRange() Const olMailItem = 0 Dim rngToSend As Range, r As Range Dim FileName As String, FileName2 As String Dim strHtml As String Set rngToSend = Selection strHtml = RangeToHTML(rngToSend) With Sheets("address") For Each r In .Range("a1", .Cells(Rows.Count, "a").End(xlUp)) With CreateObject("Outlook.Application").CreateItem(olMailItem) .To = r.Value .Su..
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..