2017-11-29 22 views
-1

질문에 대답하는 것으로 보이는 다른 페이지를 검색했습니다. 시트간에 if-then 수식을 사용하여이 작업을 시도했지만 여러 셀/열에서는 제대로 작동하지 않습니다. 나는 그것을 이해할 수 없다.Mac 용 Excel에서 다른 시트의 데이터를 기반으로 한 이름 목록을 한 시트에 자동 채우는 방법

누군가가 검색어를 제안했지만 (Google에서 사용하기 위해 만든 것이고 Excel에서는 작동하지 않음) 어딘가에서 보았습니다. 이것을 최선으로 수행하는 방법에 대한 제안?

Excel에서 컨설턴트 데이터베이스를 만들려고합니다. 우리는 프로젝트에서 컨설턴트를 사용하고 다양한 컨설턴트가 X 개의 작업을 수행합니다. 회사 이름

B1 - - 특수 1

C1 - 특수 2

D1 - 특수 3

시트 (1)가 다음 데이터

A1과 마스터 목록 것

(기타 - 아마도 최대 10 개의 전문 분야),

L1 - 열쇠 접촉

M1 - 이메일 1

N1 - 이메일 2

O1 - 이메일 3

P1 - 이메일 4

Q1 - 이전 프로젝트

등 (휴대 전화 번호가 더있을 수 있음)

시트 2 이상은 전문 분야에 따라 채워집니다.

시트 2를 Architect라고합니다.

A1 회사 명

B1 주요 연락처

C1 이메일 1

: 특산품 중 하나가 "건축가"를 일치하면, 나는 그것이 (시트 2) 건축가 시트에 다음 나에게 제공 할 것

D1 이메일 2

E1 Email3

F1 Email4

G1 이전 프로젝트

자동 채워지는 방법을 알아 주실 수 있습니까? 마스터 시트가 변경되면 다른 시트를 지속적으로 업데이트 할 필요가 없습니다.

+2

에 오신 것을 환영합니다. 명확한 질문을 찾을 수 없습니다. (이 코드는 나에게 맞는 코드가 아닙니다.) 게시물을 수정하고 문제를 해결할 수 있습니까? 읽으십시오> [묻는 방법] (https://stackoverflow.com/help/how-to-ask) –

+0

완료. 무료 코딩을 원하지 않습니다. 접근 할 제안을 찾고 있습니다. –

+0

각 "회사"에 대한 "마스터 목록"시트가 있습니까, 아니면 "A1"은 "행 1"등입니까? – YowE3K

답변

0

잠재적 인 "Query"시트 Worksheet_Change 이벤트이 코드는 "질의"에 사용하는 실제 시트의 코드 모듈)에 붙여 넣을 수 있어야합니다

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub 
    On Error GoTo ReEnableEvents 
    Application.EnableEvents = False 
    Dim lastRow As Long 
    Dim r As Long 
    Dim c As Long 
    Dim newRow As Long 
    Dim Speciality As String 
    Speciality = Range("A1").Value 
    'clear existing data 
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row 
    If lastRow > 2 Then ' Assume headings are on row 2 
     Rows("3:" & lastRow).ClearContents 
    End If 
    'find new data 
    newRow = 2 
    With Worksheets("MasterList") 
     For r = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row 
      For c = 2 To 11 ' loop through the speciality columns 
       If .Cells(r, c).Value = Speciality Then 
        newRow = newRow + 1 
        Cells(newRow, "A").Value = .Cells(r, "A").Value 
        Cells(newRow, "B").Value = .Cells(r, "L").Value 
        Cells(newRow, "C").Value = .Cells(r, "M").Value 
        Cells(newRow, "D").Value = .Cells(r, "N").Value 
        Cells(newRow, "E").Value = .Cells(r, "O").Value 
        Cells(newRow, "F").Value = .Cells(r, "P").Value 
        Cells(newRow, "G").Value = .Cells(r, "Q").Value       
        Exit For 
       End If 
      Next 
     Next 
    End With 
ReEnableEvents: 
    Application.EnableEvents = True 
End Sub 

이것은 "쿼리"시트의 셀 A1은 당신이보고 싶은 값이 있다고 가정합니다 (즉, "Speciality"), 해당 시트의 2 번째 줄에는 제목이 있고 3 번째 줄에는 그 결과가 채워질 것입니다.

테스트를 거치지 않았지만 필요한 것에 근접해야합니다.

+0

참고 : 모든 코드가 Mac 버전의 Excel에서 유효한지 여부는 알 수 없습니다. 그것은 상당히 기본적인 것처럼 보입니다. ** 나는 당신이 그것에 문제가 있다고 생각하지 않습니다 **. – YowE3K

+0

와우, 정말 고마워. –