|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
안녕하세요
3개의 각 셀에 이름이 입력된 상태에서 셀병합을 하면 "셀을 병합하면 왼쪽 위의 값만 남고 나머지 값은 잃게 됩니다."라는 메시지 창에서 [확인] 단추를 클릭하면 3개 셀이 병합하고 1개 셀 데이터값 남게되는 것으로 알고 있습니다.
퇴직자가 만든 자료를 갖고 새로운 보고서 자료를 만드는데, 다른 데이터를 입력하기 위하여 셀병합 해제하고 각 셀에 새로운 이름 입력하고 셀 병합을 하면 셀 병합 후 1개의 이름 입력값 남게 됩니다.
그래서, 임시 방편으로 다른 셀에서 "서식 붙여넣기" 기능을 이용하여 자료를 작성하고 있습니다.
셀 병합하여도 3개의 데이터가 남게 하는 방법은 무엇인지요?
첨부파일을 살펴봐주시고 설명을 부탁드립니다.
감사합니다.
==============[박인호님 글에 대한 답변입니다]==============
VBA로 만들었습니다. 첨부파일 참고하세요...
Sub UserMerge()
Dim rSelect As Range
Dim rArea As Range, rX As Range
Dim sTxt As String
If TypeName(Selection) <> "Range" Then Exit Sub
Set rSelect = Selection
Application.DisplayAlerts = False
For Each rArea In rSelect.Areas
sTxt = ""
For Each rX In rArea.Cells
If rX <> "" Then sTxt = sTxt & vbLf & rX.Value
Next
rArea.Merge
rArea.Cells(1) = Mid(sTxt, 2)
Next
Application.DisplayAlerts = True
End Sub
Sub UserUnMerge()
Dim rSelect As Range
Dim rArea As Range, rX As Range, rY As Range
Dim vTxt, vCell, sTxt As String
Dim iX As Integer, iMax As Integer, iUbound As Integer, iCnt As Integer
If TypeName(Selection) <> "Range" Then Exit Sub
For Each rX In Selection.Cells
If rX.Cells(1).MergeCells Then
Set rSelect = rX.Cells(1).MergeArea
vTxt = Split(rSelect.Cells(1), vbLf)
iUbound = UBound(vTxt) + 1
iCnt = rSelect.Rows.Count
ReDim vCell(1 To iCnt, 1 To 1)
iMax = WorksheetFunction.Max(iCnt, iUbound)
For iX = 1 To iMax
If iX <= iUbound Then
If iX <= iCnt Then
vCell(iX, 1) = vTxt(iX - 1)
Else
vCell(iCnt, 1) = vCell(iCnt, 1) & vbLf & vTxt(iX - 1)
End If
End If
Next
rSelect.UnMerge
rSelect.Value = vCell
End If
Next
End Sub
|
|