엑셀 복사 기능 질문

알림
|
X

페이지 정보

작성자 GreenDay 210.♡.177.30
작성일 2024.11.05 11:02
160 조회
1 추천

본문

예를 들어 아래와 같은 엑셀 시트가 있습니다.

품번
수량
AAA
2
BBB
3


그럼 AAA 항목을 2개 복사하고 BBB를 3개 복사해주는 함수나 방법이 있을까요?

AAA
AAA
BBB
BBB
BBB



위처럼 해주면 됩니다.


몇개 안되면 수작업으로 복사하면 되는데 종류도 수백가지이고 상품별로 수량도 상품별로 수십개씩 각각이라서 이걸 하나하나 복사 붙여넣기 하는건 시간 낭비라서요.




댓글 6 / 1 페이지

Und3r9r0unD님의 댓글

작성자 Und3r9r0unD (118.♡.62.3)
작성일 11.05 11:29

VBA 매크로로 하셔도 되는데..

일단 수식으로 하는 것만 알려드리면, 아래 1/2/3/4/5 순서대로 하시면 되는데요..
REPT 함수로 텍스트와 반복횟수를 넣어서 이어 붙입니다.
>> 1번의 D2수식은 첫줄만이고, 2번의 D3수식이 계속됩니다.
  =D2&REPT(A3&",",B3)

제일 아래 셀까지 가면 위에 내용들이 모두 반복되어 있을 겁니다.
그걸 새로 SHEET 를 열어서 A1셀에 값으로 붙여넣으시고(3번)

그 셀의 내용을 메뉴 > 데이터 > 텍스트나누기 (4번)를 통해서 셀분리를 합니다. (구분자는 , 콤마)

셀로 나뉘어진걸 다시 복사 > 마우스 오른쪽버튼 > 선택하여 붙여넣기 > 행/열 바꿈 (5번)
으로 붙여넣으면 세로로 되어있을 겁니다.

너무 많으면 반복하셔야 할거구요..

GreenDay님의 댓글의 댓글

대댓글 작성자 GreenDay (210.♡.177.30)
작성일 11.05 12:04
@Und3r9r0unD님에게 답글 답변 감사드립니다.
한참 읽어봐야겠네요.

88 올림픽 하던 시절에 배운 GW-BASIC 이후엔 HTML빼고 스크립트 조차 전혀 안해봐서요..ㅎㅎ

LiNE님의 댓글

작성자 LiNE (210.♡.102.188)
작성일 11.05 11:30
VBA 매크로 쓰면 됩니다.
alt + F11로 코드 넣으시고.. alt + F8로 아래 함수 선택하시고 실행하시면 영역 지정 뜹니다. 제목 말고 데이터 부분만 선택하시면
현재 코드상으로 D0부터 데이터가 출력됩니다. 바꿔쓰시면 됩니다.

Sub CopySelectedItems()
    Dim selectedRange As Range
    On Error Resume Next
    Set selectedRange = Application.InputBox("품번과 수량이 있는 범위를 선택하세요:", Type:=8)
    On Error GoTo 0
   
    If selectedRange Is Nothing Then
        MsgBox "범위가 선택되지 않았습니다.", vbExclamation
        Exit Sub
    End If
   
    ' 저장할 열과 행을 지정하는 변수 (여기서 설정)
    Dim outputColumn As Long
    Dim outputRow As Long
    outputColumn = 4 ' 예: 4 = D열
    outputRow = 1 ' 예: 1행부터 시작
   
    Dim cell As Range
   
    ' 선택한 범위의 각 품번과 수량에 따라 복제
    For Each cell In selectedRange.Columns(1).Cells ' 첫 번째 열이 품번
        If cell.Offset(0, 1).Value > 0 Then ' 두 번째 열이 수량
            Dim item As String
            Dim quantity As Long
           
            item = cell.Value
            quantity = cell.Offset(0, 1).Value
           
            ' 수량만큼 출력
            Dim j As Long
            For j = 1 To quantity
                Cells(outputRow, outputColumn).Value = item ' 지정된 열과 행에 결과 출력
                outputRow = outputRow + 1
            Next j
        End If
    Next cell
   
    MsgBox "선택한 범위의 복제가 완료되었습니다.", vbInformation
End Sub

GreenDay님의 댓글의 댓글

대댓글 작성자 GreenDay (210.♡.177.30)
작성일 11.05 12:06
@LiNE님에게 답글 상세한 답변 감사드립니다.

윗 댓글에도 썼지만 스크립트 조차도 안해봐서 천천히 하나하나 찾아보면서 해봐야겠네요.

12시님의 댓글

작성자 12시 (75.♡.134.17)
작성일 11.06 01:58
굉장히 쉬운 방법이 있긴 합니다만 약간 눈속임이라서. 어쨋든 출력만 할거라면 상관 없죠 뭐.
본문을 표로 만들어서 품번을 세로가 아니라 가로로 배열한 후에 나중에 수동이든 transpose를 쓰든 세로로 다시 배열해 주시면 됩니다.



C2 =IF($B2-C$1>=0,$A2,) 이런 함수를 넣고 쭈욱 채우시면 위 표와 같이 나오는데 수량을 넘어서는 값은 0으로 표시됩니다. 셀에서 0을 지우면 값이 또 이상하게 나오니까 지우지 말고 안보이게 conditional format으로 꼼수를 쓰면 됩니다.
메뉴에서 conditional formatting을 선택하고 셀값이 0이면 폰트를 바탕색(하얀색)으로 지정해 주면 위 표와 같이 나옵니다.

또 한가지 더 좋은 방법은 엑셀옵션 - advanced - display - hide zero value을 체크하면 쉬트에서 0값이 표시되지 않습니다. 출력할때 0이 표시되지 않아도 되는 작업이라면 이 방법이 정석입니다. 물론 0값이 삭제된 건 아니기 때문에 수식계산을 해도 정상적으로 0값으로 작동합니다

맛이가네님의 댓글

작성자 no_profile 맛이가네 (211.♡.203.112)
작성일 11.06 08:18
vba 사용하지 않는 방법도 있네요.
https://m.clien.net/service/board/kin/12745004 덧글 참조하시고
국내 링크도 있군요.
https://ko.extendoffice.com/documents/excel/1897-excel-repeat-cell-value-x-times.html
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색