목록vba (68)
rand(life)
지식인에서 답변을 달기 위해 코딩을 하다가 문득 생긴 의문이다. 범위대 범위를 한번에 비교할 수 있는 방법은 없을까?그래서 지식인에 질문을 했다. A1:C1 범위와 A2:C2 범위의 값을 각각 비교하고 싶어서(즉, A1과 A2를 비교, B1과 B2를 비교, C1과 C2를 비교)if range("A1").resize(,3) = range("A2").resize(,3) then 이렇게 했더니 오류 메시지가 뜨네요.If [a1] = [a2] and [b1] = [b2] and [c1] = [c2] then이렇게 하나씩 비교하는 수 밖에 없나요?범위대 범위로 한번에 비교하는 방법이 있는지 궁금합니다. 두 개의 답변이 달렸다. 그것도 지식인 랭킹 1,2위를 하시는 분들께서! 한분의 답은 For ~ Next 순환문..
지식인 질문에 대한 답이다. 나는 만들어진 단어 9개씩의 한 줄도 중복되는 것이 있을거라보고 중복을 없애기 위해 Collection을 이용했는데, 큰형님은 그런 과정 없이 숫자만 100으로 바꾸었다. 25개 중에서 9개 뽑는 정도로는 쉽게 중복되지 않는 것이라 본 것일까..... Sub Macro() Dim valR(), T() As Variant Dim nc As New Collection Dim rng As Range Dim i As Integer, c As Integer, n As Integer, r As Integer Dim str As String Dim s As Variant Set rng = Range("B3:B27")Do Until nc.Count = 100 '콜렉션이 100개가 될때까지 ..
겉보기에는 빈칸인데 F5 이동키를 이용해서 빈칸을 선택하려해보면 안잡히는 셀이 가끔 있다. 주로 인터넷에서 자료를 복사해오거나 할 때 주로 생기는데, 수식이나 기능을 써야할때 이 것들 때문에 오류가 나서 짜증나게 한다. 이런 유령문자를 없애는 데는 몇 가지 방법이 있는데, 여기서는 두 가지를 소개한다. 첫번째는 텍스트 나누기를 이용하는 방법이다. 아래처럼 유령문자가 있는 열을 선택하고텍스트나누기를 실행하고, 첫단계에서 바로 "마침"을 누르는 것이다. 이 방법은 간단해서 좋은데, 텍스트나누기는 여러 열을 선택하고 한꺼번에 실행할 수가 없기 때문에, 해야할 열이 많거나 여러 파일에서 같은 일을 해야하면 VBA를 이용해야한다. Sub QuickReplace()Dim XDim lngRow As LongDim l..
지식인 답변했던 것 중 쓸모있다고 생각되는 것을 기억하기 쉽게 정리해두려고 한다. 다음에 비슷한 일이 있으면 또 써먹을 수 있게..아래는 "특정문구가 들어가 있는 페이지만 인쇄할 수 있나요?"라는 질문에 대한 답이다. Sub checkprint()Dim ws As WorksheetDim rng As Range, c As RangeDim str As String, strFirstAddr As StringDim h As HPageBreak '페이지나누기 표시도 Type으로 지정할 수 있다는 것을 처음 알았다.Dim lc As Long, i As LongDim lpc As DoubleDim arr() '페이지 나누기가 있는 곳의 셀 주소를 담을 배열변수 Set ws = Worksheets(1)Set rng =..
2차원 배열에서 특정차원에 지정된 값이 있는지 검색하는 법 Application.Match(변수, Application.Index(배열, 0, 컬럼위치), 0) index함수에서 두,세번째 인수를 0을 주면 해당 배열을 반환한다는 점을 이용 index(arr, 0, 3) 하면 arr배열에서 3번째 칼럼을 의미index(arr, 2, 0) 하면 2번째 행 arr 배열이 다음과 같다면 1 학번1 이름1 과목12 학번2 이름2 과목23 학번3 이름3 과목3index(arr, 0, 3)은 이름1,이름2,이름3… 의 배열을 의미한다. 따라서 arr배열에서 이름2라는 값이 있는지, 있다면 어디에 있는지를 확인 가능하다.
'87 [빈값의 차이]Empty 변수 초기화되지 않은 상태. 숫자=0, 텍스트 =""Null Variant 형식 변수"" 텍스트형식 변수Nothing 개체변수에 할당되지 않은 상태 '89FN = Range.Address(False, False) 'A1 상대참조FN = Range.Address(True, True) '$A$1 절대참조 '90Val(s) 문자열 s를 숫자로1,000은 1만 인식함. 그래서Val (Replace(s, ",", ""))와 같이 , 를 공백으로 바꿔줘야함 Str(n) 숫자 n을 문자열로 (숫자를 문자로 변환하기 위해 앞에 공백을 추가함.그래서 문자개수가 1추가됨 '91변수 = Format(dv, "aaa") '월,화,수....Q '1분기, 2분기...ww '주의 일련번호 1~53'..
'[제목줄 제외하고 아래끝까지 범위 재설정]With RngSet Rng = .Offset(1).Resize(.Rows.Count - 1, .Columns.Count)End With '[autofill 채우기]날짜.AutoFill Destination:=날짜.Resize(15), Type:=xlFillWeekdays, '평일날짜로만 채움' Type:=xlFillCopy '셀복사로 채움 '[한 셀 안의 문자열 중 일부만 첨자 및 색입히기]With Range("A1").Characters(4, 6).Font '4~6번째 문자.Superscript = True '위첨자.Subscript = False '아래첨자.Color = vbRedEnd With [범위중 두 번째 열 지정]Set r = sht.Range("..
Application.CutCopyMode = False '클립보드를 비운다. 이것없이 파일 닫으면 경고창 뜸Range.Insert copyorigin:=True '복사한 셀 삽입 Cells.ClearHyperlinks '모든 셀에서 하이퍼링크 삭제 '[autofill 채우기]날짜.AutoFill Destination:=날짜.Resize(15), Type:=xlFillWeekdays, '평일날짜로만 채움' Type:=xlFillCopy '셀복사로 채움 [복사 붙이기, 잘라내기 붙이기]Selection.Copy Sheets(2).Range("c5") ‘선택영역 복사해서 C5 위치에 붙여넣기 Range("C5:I5").Cut Range("A1:G1") ‘영역 잘라내서 뒤의 영역에 붙이기 [값으로 붙여넣기]값..