CAFE

Re:한셀에 여러개의 레코드값을 찾아 나타내는 방법 질문입니다.

작성자Lago|작성시간12.06.19|조회수202 목록 댓글 5

Sub Test()
     Dim rngD As Range, R  As Range
     Dim rngF As Range, F As Range
     Dim ad As String
     Dim c As Long, j As Long, i As Long, k As Long
     Dim myY As Integer
     Dim myM As Integer
     Dim xDate As Date
     Dim strX() As String
    
     With Sheets("일정")
          Set rngF = .Range("A1").EntireColumn.SpecialCells(2)
     End With
     c = 14
     With Sheets("달력")
          Set rngD = .Range("B7").Resize(1, c)
          Set rngD = Union(rngD, .Range("B9").Resize(1, c))
          Set rngD = Union(rngD, .Range("B11").Resize(1, c))
          Set rngD = Union(rngD, .Range("B13").Resize(1, c))
          Set rngD = Union(rngD, .Range("B15").Resize(1, c))
          Set rngD = Union(rngD, .Range("B17").Resize(1, c))
          rngD.ClearContents
          Set rngD = rngD.Offset(-1)
          myY = CInt(.[C2])
          myM = CInt(.[E2])
         
          On Error Resume Next
          With Application
               .ScreenUpdating = False
               .EnableEvents = False
          End With
          For i = 6 To 16 Step 2
               For k = 2 To 14 Step 2
                    Set R = .Cells(i, k)
                    If R.Value <> "" And CDate(R) Then
                         j = 0
                         Erase strX
                         xDate = DateSerial(myY, myM, Day(R))
                         Set F = rngF.Find(xDate, , xlFormulas, xlWhole)
                         If Not F Is Nothing Then
                              ad = F.Address
                              Do
                                   ReDim Preserve strX(j)
                                   strX(j) = F.Offset(, 1)
                                   j = j + 1
                                   Set F = rngF.FindNext(F)
                              Loop While Not F Is Nothing And ad <> F.Address
                              R.Offset(1).Resize(1, 2).Value = Join(strX, Chr(10))
                         End If
                    End If
               Next
          Next
          With Application
               .ScreenUpdating = True
               .EnableEvents = True
          End With
     End With
     Worksheets("달력").Range("R6:R23").NumberFormat = "d"

End Sub

 

코드를 이렇게 수정 하여 보세요..!!

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자윤슬 | 작성시간 12.06.20 라고야 고마워...
    내가 금주내내 교육이라 답변을 못 드렸는데... ^^*
  • 작성자ITX청춘 | 작성시간 12.06.20 허걱!
    코드 전혀 모르는데...
    그대로 복사해서 실행했는데요 일자보다 하루 더 큰 일자에 나타나네요.
    그리고 5주차 이상일때 빈셀에도 월초 data들이 나타납니다.ㅠㅠ
    코드를 좀 알면 수정할텐데...

  • 작성자Lago 작성자 본인 여부 작성자 | 작성시간 12.06.20 코드중에
    xDate = DateSerial(myY, myM, Day(R))

    xDate = DateSerial(myY, myM, CInt(R))
    이렇게 수정하시면..
  • 작성자ITX청춘 | 작성시간 12.06.20 1일 이전은 전월말의 data가 나타나고
    말일 이후는 익월초의 data가 나타납니다.
    요 부분 해결방법은 없을까요?
    달력에서는 일자가 보이지 않도록 했습니다.
    Clear하게 당월의 data만 보고 싶습니다.
  • 답댓글 작성자Lago 작성자 본인 여부 작성자 | 작성시간 12.06.20 하기 답글 확인해 보시면.....
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼