2013-05-07 5 views
2

두 개의 드롭 다운 목록이있는 기존 스프레드 시트 작업. 이 드롭 목록에서 데이터를 내보내거나 편집 할 수 있습니까?Excel의 드롭 다운 목록 편집 또는 내보내기

+0

데이터 검증 목록의 목록을 다른 시트로 내보내려고합니다. –

+0

아니요, xls 데이터가 데이터베이스로 마이그레이션됩니다. –

+0

아, 아래 답변을 편집하셨습니다. 내 대답은 당신의 대답을 기반으로했다 :). –

답변

3

데이터 유효성 검사 목록에서 이러한 3 가지 시나리오를 사용할 수 있습니다. 동일한 시트의 범위를 말한다

A) 수식

enter image description here

B) 직접 콤마

enter image description here

을 이용하여 입력되는 목록 C) s에서 명명 된 범위를 나타내는 수식입니다. AME/다른 시트

enter image description here

이제 우리는 우리가 그 목록을 검색 할 경우 모든 세 가지 시나리오를 수용 할 필요가있다.

는 데이터 유효성 검사 셀의 목록에 액세스하려면이 코드를 참조 Rng.Validation.Formula1

을 사용해야합니다.

Sub Sample() 
    Dim ws As Worksheet 
    Dim dvRng As Range, rng As Range 
    Dim strList As String 
    Dim MyAr() As String 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    Set dvRng = ws.Range("A1") ' Case A 
    'Set dvRng = ws.Range("C1") ' Case B 
    'Set dvRng = ws.Range("E1") ' Case C 

    '~~> Get the formula in the data validation 
    strList = dvRng.Validation.Formula1 

    '~~> Check if it has an = sign for Case A and Case C 
    If InStr(1, strList, "=") Then 
     strList = Replace(strList, "=", "") 
     Set rng = Range(strList) 
     rng.Copy Sheet2.Range("A1") 
    Else 
    '~~> Case B 
     If InStr(1, strList, ",") Then 
      MyAr = Split(strList, ",") 
      Sheet2.Range("A1:A" & UBound(MyAr) + 1).Resize.Value = Application.Transpose(MyAr) 
     Else 
      Sheet2.Range("A1").Value = strList 
     End If 
    End If 
End Sub 

아무런 문제가 발생하지 않도록 코드에 주석 처리했습니다. 그래도 질문을하면 간단히 묻습니다.

+0

나는 단지 내가 워크 시트의 Change 이벤트에서 Range (MyCell.Validation.Formula1)를 얻으려고하면 오류가 있다는 것을 발견했다. 워크 시트의 계산 이벤트에서 같은 문제가 발생했습니다. 해결 방법은 해당 비트를 공용 모듈의 공용 함수에 넣고 셀 참조를 매개 변수로 전달한 다음 해당 함수를 Change 이벤트에서 호출하는 것입니다. –

0

다른 사람이 더 좋은 생각이 없다면, 각 항목을 다른 셀로 선택한 다음이를 테이블로 가져올 수있는 CSV 파일로 복사했습니다.