2013-05-31 2 views
-1

셀을 여러 셀로 바꾸고 다른 셀을 여러 셀로 대체하는 방법이 있습니까? 다음의 예는 시트 (A)의 제 1 라인의 교체를 도시셀 내용을 여러 셀로 바꾸기

워크 시트 A : 열 A의 항목이 해당 항목으로 대체되어야 워크 B의 대체 논리

pic2

어디에서나 zd가 사용되면 a_zd, b_zd 및 y_zd가되어야합니다. 어디에서나 fs가 사용되면 c_fs, y_fs 및 z_fs가되어야합니다. 예 : A1 = zd 및 B1 = a_zd; A2 = zd 및 B2 = b_zd; A3 = zd 및 B3 = y_zd; A4 = fs 및 B4 = c_fs; A5 = fs 및 B5 = y_fs; A6에서의 = FS 및 B6 = z_fs : 워크 C. 예의 결과를 가질 것이다

pic2

워크 A의 제 1 라인의 교체 : A1 = B1 = a_zd 및 c_fs; A2 = a_zd 및 B2 = y_fs; A3 = a_zd 및 B3 = z_fs; A4 = b_zd 및 B4 = c_fs; A5 = b_zd 및 B5 = y_fs; A6 = b_zd 및 B6 = z_fs; A7 = y_zd 및 B7 = c_fs; A8 = y_zd 및 B8 = y_fs; A9 = y_zd 및 B9 = z_fs ;:

pic2

+0

데이터 귀하의 예는 정말 이해가되지 않습니다. "광고"와 "DS"는 어떻게 되었습니까? 텍스트는 이미지를 묘사하고 발생한 변형은 설명하지 않습니다. 각 행에 대해 처음부터 끝까지 얻는 단계를 자세히 설명하는 지침을 작성하십시오. 이 코드를 사용하여 코드 작성을 시작하십시오. – NickSlash

+0

... 이것은 명확한 질문이 아니며 그 이유가 아마도 투표를 거치지 않은 이유 일 것입니다. – whytheq

+0

죄송합니다. 이 예에서는 워크 시트 1의 첫 번째 줄 (zd 및 fs)을 대 체했습니다. 대체로 zd가 사용되는 곳마다 a_zd, b_zd 또는 y_zd가 표시되어야하며 fs가 사용되는 모든 곳에서는 c_fs, y_fs 및 z_fs가 대신 표시되어야합니다. 대체 결과는 워크 시트 3에 나열된 9 개의 쌍입니다 (아래의 예). – CKL

답변

0
Option Explicit 

Sub CombineData() 
    Dim myInput As Range 
    Dim myOutput As Range 
    Dim inputTwoValues As Collection 
    Dim output1 As Collection 
    Dim output2 As Collection 
    Dim anOutput1 As Variant 
    Dim anOutput2 As Variant 

    Set myInput = Worksheets("Sheet1").Range("A1") 
    Set myOutput = Worksheets("Sheet3").Range("A1") 

    Do 
     Set output1 = GetRelatedValues(myInput.Value) 
     Set output2 = GetRelatedValues(myInput.Offset(0, 1).Value) 
     For Each anOutput1 In output1 
      For Each anOutput2 In output2 
       myOutput.Formula = anOutput1 
       myOutput.Offset(0, 1).Formula = anOutput2 
       Set myOutput = myOutput.Offset(1, 0) 
      Next 
     Next 
     Set myInput = myInput.Offset(1, 0) 
    Loop While myInput.Value <> "" 
End Sub 


Function GetRelatedValues(myInput As Variant) As Collection 
    Dim returnVal As New Collection 
    Dim myRelationship As Range 
    Set myRelationship = Worksheets("Sheet2").Range("A1") 

    While myRelationship.Value <> "" 
     If myRelationship.Value = myInput Then 
      returnVal.Add (myRelationship.Offset(0, 1).Value) 
     End If 
     Set myRelationship = myRelationship.Offset(1, 0) 
    Wend 
    Set GetRelatedValues = returnVal 
End Function 
+0

이것은 완벽하게 작동했습니다. 너무 감사합니다!!! – CKL

+0

유지 관리상의 이유로 입력/출력 변수를 비즈니스 논리에서 의미가있는 이름으로 바꿀 수 있습니다. –

관련 문제