2011-02-04 8 views
1

파이썬에서는 libs를 사용하여 엑셀 파일 작업을하고 싶습니다. 하지만 지금은 VBA를 배우려고하기 때문에이 질문을해야합니다.VB : 엑셀 테이블의 데이터 필터링

저는 약 12 ​​개의 열과 50000 개의 행이있는 워크 시트에서 작업하고 있습니다. 이 데이터는 회사에 전송 된 요청을 나타냅니다. 5 # 열은 해당 코드를 나타내며, 10 #은 완료까지 걸린 시간을 나타냅니다. 그러나 예를 들어 행 5, 10 및 12는 동일한 요청에 속할 수 있으며 조직 목적으로 분리되었습니다. 6 # 요청을 응답 한 사람 을 대표

  1. 칼럼 : 내가 할 수 있도록

    나는,이 데이터를 처리해야합니다. 따라서 각 요청을 "사람의 워크 시트"에 넣으려면 이 필요합니다. 또한 에 요청을 추가하기 전에이 워크 시트를 작성하여 워크 시트를 만드십시오.

  2. 각 사람 (워크 시트)에 대해 요청 유형 (열 2 #)이 참석합니다. 즉, 워크 시트에 다른 테이블을 생성하십시오 표시 : Type_Of_Request | Number_of_ocurrences

  3. 위의 같은 테이블 을 보여주는하지만,

것을 제외하고 (사람 필터없이) 모든 요청 회계, 최종 보고서 워크 시트를 만듭니다 : I에 유래에 대한 대부분의 질문이 특정 문제를 해결하는 것을 알고, 하지만 여기서 출발 경로를 묻고 있습니다. 또는 가능한 경우 솔루션.

설명의 목적으로, 나는 파이썬에서 사용 된 알고리즘을 설명하는 것이 파이썬과 VBA를 약간 알고있는 사람들이 나를 도울 수 있다고 생각합니다. 그래서, 각각의 문제에 대한 :

  1. 는 6 # 열 데이터를 관리하는 딕셔너리를 만듭니다. 이 dict은 사람의 고유 이름을 키로 가지며 응답 한 각 요청에 대해 그의 이름 (dict 키)을 가리키는 목록에 추가됩니다. : 추천 뭔가 PERSON1 {[request1, request2, request3, ..., ...}

  2. # 2 열 개 데이터 (요청 유형)을 관리하는 또 다른 딕셔너리. 이제 각 항목에 해당 유형의 요청을 보여주는 목록이있는 dict이 있습니다. 모든 요청을 배치 한 후에는 목록에서 간단한 합계를 수행하고 (key, sum (dict [key])) 으로 표를 채 웠습니다. 여기서 dict [key]는 같은 유형의 요청 목록이고 합계는 그 유형의 요청 합계를 리턴합니다. 같은 뭔가 : {request_type1 : [request1, request2, request3, ...] ...}

  3. 2의 같은 음,하지만 초기 전체 테이블에 알고리즘을 적용.

파이썬이있다 (그리고 많은 도움이됩니다!)처럼 VB는 DICT 유형이 있는지 나도 몰라, 나는 VB에 새로 온 사람도 있기 때문이다. 감사합니다. 도움이 필요합니다.

+0

실제 문제/알고리즘에 대한 언급이 없어도 VBA와 함께 사전을 쉽게 사용할 수 있음을 알려드립니다. http://stackoverflow.com/questions/1309689/hash-table-associative-array-in-vba/1309739 # 1309739 – jtolle

+0

팁을 확인한 결과 좋은 소식입니다. VBA에 관한 Dicts에 대해 약간 설명합니다. 고마워요 –

답변

3

vba는 실제로 사전 형식을 가지고 있지만 사용법은 파이썬의 구현을 반영하지 않을 수 있습니다. (참조 : http://msdn.microsoft.com/en-us/library/aa164502%28v=office.10%29.aspx를)

당신은 또한 사용자 정의 형식을 만들 수 있습니다 (참조 : http://msdn.microsoft.com/en-us/library/aa189637%28v=office.10%29.aspx를)

당신이 작업 솔루션이있는 경우, 즉 가장 좋은 출발점이다. Python 문자열 함수 등의 많은 것들이 아마도 언어 참조에서 쉽게 찾을 수있을만큼 충분히 가깝거나 가까운 것으로 명명되어 있습니다.

+0

팁 주셔서 감사합니다, 조금 더 공부하고 알아 내려고 노력하겠습니다. –

0

Jet/ACE 연결을 사용하면 Excel에서 잘 작동하는 ADO를 사용하면이 작업을보다 쉽게 ​​수행 할 수 있습니다. 또한 rs.CopyFromRecordset을 사용하여 워크 시트에 적합한 세트를 작성할 수 있습니다.

+0

팁 주셔서 감사합니다. ADO는 내 머리 속에있는 것보다 훨씬 더 효과적입니다. –