목록scripting (3)
rand(life)
지식인 질문에 대한 답. 다른 분의 답이지만 연구를 위해 가져왔다. 이런 구조에서, A와B열에서 가장 많이 나온 문자, 또는 두번째로 많이 나온 문자를 찾는 문제이다. VBA로 해야한다.코드 전체는 첨부화일을 참고하면 된다. 코드 중에서 오늘 살펴볼 부분은 아래 부분이다. v = Intersect(ws.UsedRange, 범위).Value For r = 1 To UBound(v, 1) For c = 1 To UBound(v, 2) d(v(r, c)) = d(v(r, c)) + 1 Next Next그 중에서도 파란색으로 표시한 부분이 제일 어려웠다. 여기서 d는 지난 포스트에서 설명한 Scripting.Dictionary이다. 오랜 시간동안 F8키를 누르면서 살펴보았는데, 결론은 다음과 같다. 위의 그림 ..
CreateObject("Scripting.FileSystemObject") 를 이용하는 방법이다. (파란색 글씨가 핵심 부분이다) 출처: https://stackoverflow.com/ Option Explicit Public Arr() As String Public Counter As Long Sub macro() Dim myArr strPath = "d:\data\" myArr = GetSubFolders(strPath)Counter = 0 End Sub Function GetSubFolders(RootPath As String) Dim fso As Object Dim fld As Object Dim sf As Object Dim myArr Set fso = CreateObject("Scriptin..
중복없이 값을 배열에 넣기 위해 그동안 컬렉션을 사용했었는데, 많이 불편했다. 그런데 이번에 Scripting.Dictionary를 사용하는 방법을 알게 되었다. 원문은 여기 그리고 여기번역문은 여기이다. 상당히 편리하다. 원문의 설명에 따르면 Scripting.Dictionary를 사용하기 위해서는 VB편집기에서 설정을 해주어야한다고 한다. VB편집기 상단 - 도구 - 참조에서Microsoft Scripting Runtime을 체크하면 된다그런데 엑셀2016 기준으로 위의 체크를 하지 않아도 작동한다. 왜 그런지는 좀 더 알아봐야 할 듯 해당 기능을 이용한 매크로 예제이다. exists메서드가 유용하게 사용된 경우. 기본적인 몇가지 코드. 위의 링크에서는 복사가 안되어서...