2차원 테이블을 단일 테이블로 변환

2차원 테이블을 단일 테이블로 변환

관세 코드와 관련된 제품 가격이 포함된 일부 데이터가 있습니다.

+==============+========+========+========+========+
| product code | code10 | code20 | code30 | code40 |
|==============+========+========+========+========|
| product1     | 12.3   | 12.4   | 12.5   | 12.6   |
+--------------+--------+--------+--------+--------+
| product2     | 13.3   | 13.4   | 13.5   | 13.6   |
+--------------+--------+--------+--------+--------+
| product3     | 14.3   | 14.4   | 14.5   | 14.6   |
+--------------+--------+--------+--------+--------+

제품 코드, 가격, 관세 코드 등 세 개의 열이 있는 테이블을 얻고 싶습니다.

+==============+=======+=============+
| product code | price | tariff code |
|==============+=======+=============+
| product1     | 12.3  | code10      |
+--------------+-------+-------------+
| product1     | 12.4  | code20      |
+--------------+-------+-------------+
| product1     | 12.5  | code30      |
+--------------+-------+-------------+
| product1     | 12.6  | code40      |
+--------------+-------+-------------+
| product2     | 13.3  | code10      |
+--------------+-------+-------------+
| product2     | 13.4  | code20      |
+--------------+-------+-------------+
| ........     | ....  | ......      |
+--------------+-------+-------------+
| product3     | 14.6  | code40      |
+--------------+-------+-------------+

나는 성공하지 못한 채 맞춤형 붙여넣기로 이것을 달성하려고 했습니다.
어쨌든 Calc로 이 작업을 수행할 수 있나요?

답변1

OP 댓글에서 스크립트 사용을 언급했습니다. 이 VBa는 이를 수행하여 결과를 다른 시트에 저장합니다.

귀하의 컴퓨터가 VBa를 지원하지 않더라도 스크립트는 귀하가 선호하는 언어로 이식할 수 있도록 아이디어를 제공할 수 있습니다.

VBa에서는 일반적으로 실행 취소가 작동하지 않으므로 먼저 파일 복사본을 백업으로 저장하세요!!

Sub DoSomeMagic()

Call CreateHeadings

Dim row As Integer
row = 2

Dim sheet2row As Integer
sheet2row = 2

Do While (Worksheets("Sheet1").Range("A" & row).Value <> "")


Dim col As Integer
col = 66

    Do While (Worksheets("Sheet1").Range(Chr(col) & row).Value <> "")

        Worksheets("Sheet2").Range("A" & sheet2row).Value = Worksheets("Sheet1").Range("A" & row).Value
        Worksheets("Sheet2").Range("B" & sheet2row).Value = Worksheets("Sheet1").Range(Chr(col) & row).Value
        Worksheets("Sheet2").Range("C" & sheet2row).Value = Worksheets("Sheet1").Range(Chr(col) & 1).Value
           col = col + 1
           sheet2row = sheet2row + 1
    Loop

    row = row + 1

Loop

End Sub

Sub CreateHeadings()

Worksheets("Sheet2").Range("A1").Value = "product code"
Worksheets("Sheet2").Range("A1").Font.Bold = True
Worksheets("Sheet2").Range("B1").Value = "price"
Worksheets("Sheet2").Range("B1").Font.Bold = True
Worksheets("Sheet2").Range("C1").Value = "tariff code"
Worksheets("Sheet2").Range("C1").Font.Bold = True

End Sub

원본(시트1)

여기에 이미지 설명을 입력하세요

VBa를 실행한 후 sheet2는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보