안녕하세요?
데이터를 공통된 부분은 입력하지 않거나 셀병합을 하거나 하면 엑셀에서는 해당 DB를 이용해서 어떠한 작업을 하는데 많은 제약이 따릅니다.
그래서 현재와 같이 공동된 부분이라도 다 입력을 하시는게 좋습니다.
또 반복된 행을 계속해서 입력하실 필요 없이 반복할 행을 지정해서 DB를 작성하시는게 더 효율적이라 말할 수 있으며 또한 시트별로 DB를 관리하는 방법역시 그리 바람직 하지 않습니다.
그래서 코드가 좀더 복잡해 지고 길어지게 되는 결과를 가져옵니다.
암튼 아래 코드는 첨부파일에 사용된 코드입니다.
Option Explicit
Sub Test()
Dim Sh As Worksheet
Dim Rng As Range
Dim z As Integer
Dim Str As String, Str2 As String, Fd_V As String
Dim i As Long, j As Long, k As Long
Dim Tmp As String
Application.ScreenUpdating = False
For Each Sh In Worksheets
If Sh.Name <> "Sheet1" Then
Fd_V = ActiveSheet.Range("A3").Value
z = InStr(Fd_V, "-") - 1
Str = Left(Fd_V, z) & "*"
Str2 = "*" & Right(Fd_V, 6)
Set Rng = Sh.Columns(3)
With Application.WorksheetFunction
i = .CountIf(Rng, Str)
j = .CountIf(Rng, Str2)
k = .CountIf(Rng, Fd_V)
End With
If i >= 1 And j >= 1 Or k >= 1 Then Tmp = Tmp & ", " & Sh.Name: MsgBox Tmp
End If
Next Sh
ActiveSheet.Range("b3").Value = Mid(Tmp, 3)
ActiveSheet.Range("b3").EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
자세한 내용은 첨부파일을 참고로...
그럼 잘 해결되시길... ^^*
============================================================================
첨부파일
100728_현대제철_CCM1.2.3_SEG.ASSY_MASTER_LIST.xls
============================================================================