- http://cafe.naver.com/excelmaster/132560
담당자별로 담당 중인 매장수를 출력해주는 SQL
기본서에 나오는 내용임에도 응용이 아직 안 된다.
기초를 더 다지고 응용도 열심히 해봐야지
Option Explicit Sub Macro() Dim ADO_Connect As New ADODB.Connection Dim ADO_Record As New ADODB.Recordset Dim sql As String Dim ExcelVersion As Integer Dim OLEDB_Connect As String '파일 버전을 확인하여 OLEDB를 사용할 버전을 정합니다. 'ADO에 기본으로 들어가는 내용입니다. Select Case Application.Version Case Is <= 11: ExcelVersion = 8 Case Is >= 12: ExcelVersion = 12 Case Else MsgBox "엑셀 버전을 확인해주세요" Exit Sub End Select OLEDB_Connect = "Provider=Microsoft.Ace.OLEDB.12.0;" & _ "Data Source='" & ThisWorkbook.FullName & "';" & _ "Extended Properties =""Excel " & ExcelVersion & ".0 xml; HDR = YES"";" '기존자료 삭제 Range("D1").CurrentRegion.Offset(1).ClearContents 'SQL을 지정합니다. sql = "select 담당, count(*) from " '해당 시트의 담당자명과 담당자가 맡고 있는 매장수를 가져옵니다. sql = sql & "(select distinct 매장명, 담당 " '매장명과 담당자의 중복된 내용을 제거합니다. sql = sql & "from [Sheet1$" & Range("A1").CurrentRegion.Address(0, 0) & "]) " '데이터 범위를 지정합니다. sql = sql & "group by 담당" '담당자별로 그룹을 지어줍니다. 'ADO 및 레코드셋에 ADO_Connect ADO_Connect.Open OLEDB_Connect ADO_Record.Open sql, ADO_Connect, 3, 3, 1 'A9셀에 검색 결과를 출력합니다. 검색결과가 없으면 공란을 출력합니다. Range("D2").CopyFromRecordset ADO_Record '변수 초기화 ADO_Record.Close ADO_Connect.Close Set ADO_Record = Nothing Set ADO_Connect = Nothing End Sub | cs |
'VB(A)' 카테고리의 다른 글
[ADO] 기간 설정하여 검색하기 (0) | 2016.11.18 |
---|---|
[ADO] 중복제거 후 합계 (0) | 2016.11.16 |
[ADO] 원하는 항목만 검색하여 별도의 시트에 출력하기 (0) | 2016.11.16 |
[ADO] 최대값 구하기 (0) | 2016.11.16 |
다른시트의 데이터 검색하여 출력하기 (2) | 2016.10.30 |