2012-08-14 5 views
1

본질적으로 평면 데이터베이스 테이블에 해당하는 꽤 좋은 크기의 여러 Excel 워크 시트 (WorksheetID으로 인덱싱 됨) : 행은 레코드 (워크 시트 내에서 DataRecordID으로 인덱싱 됨)이고 열은 워크 시트 내에서 DataFieldID으로 인덱싱 된 필드입니다. 셀은 해당 레코드에 대한 필드 값 (Value)을 포함합니다 (또는 비어 있음). 이미 수동으로 이런 짓을 한Excel 워크 시트를 쉽게 정규화 할 수 있습니까?

ID | WorksheetID | DataRecordID | DataFieldID | Value

을 : 나는 MS Access로 가져올 수 있도록

는이 같은 (많은) 레코드에 떨어져을 깨는에 관심이 있어요. 시트를 통해 VBA 스크립트를 작성하고 (선택적으로) 최종 테이블의 레코드를 삭제하는 것은 간단합니다.

제 질문은 : 소매를 돌리고 코딩을 시작하기 전에 이미 Excel 2010에 내장 된 기능이 있습니까?이 작업을 수행하기 위해 스크립트를 작성하지 않아도됩니까?

+1

Access에 일종의 Normalizer가 내장되어 있지 않습니까? 나는 97 년 버전에서 하나를 사용했다는 모호한 추억을 가지고있다. –

+0

@Marc B 네가 맞아. 그 점을 조사하겠습니다. – John

+0

@Marc B 테이블을 가져 왔을 때 정상화 기능이 충분하다고 생각하지 않습니다. 원하는 경우 각 필드에 대해 별도의 테이블을 만들 수는 있지만, 필요한 것은 아닙니다. 그래도 좋은 생각! – John

답변

0

데이터 원본의 레이아웃이 일관성이 있다면 스크립트는 필요하지 않습니다. 기본 과정은 그림과 함께 설명됩니다 here. 그러나 단일 행렬을 고려하고 있으므로 몇 가지 추가 단계가 필요합니다.

워크 시트 원본의 DataRecordID 표시에 빌드하십시오. 첫 번째 DataFieldID가 A2라고 가정하고 모든 시트에 대해 (새) ColumnB로 삽입 된 열에 맞춰 복사 한 =A2&"|WorksheetID"과 같은 수식을 사용한다고 가정합니다.

프로세스의 4 단계 (마법사의 3 단계 중 2b)에서 각 시트의 관련 범위를 개별적으로 추가해야합니다.

결과 테이블을 얻었 으면 새 ColumnB를 삽입하고 열에 텍스트를 적용하고 기타는 |에서 ColumnA로 구분해야합니다.

관련 문제