İki boyutlu tabloyu tek bir tabloya dönüştür


2

Tarife koduna göre ürün fiyatlarına ilişkin bazı veriler var:

+==============+========+========+========+========+
| 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   |
+--------------+--------+--------+--------+--------+

Üç sütunlu bir tablo almak istiyorum: ürün kodu, fiyat ve tarife kodu

+==============+=======+=============+
| 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      |
+--------------+-------+-------------+

Bunu başarı olmadan özel bir macunla elde etmeye çalıştım.
Bunu Calc ile yapmak için yine de var mı?


Pivot masaları kullanabilir misiniz?
Dave,

@DaveRook: Pivot tablolarının kullanımı önemsiz olmadığından, pivot tablolarını kullanarak bunun nasıl çözüleceği bir cevap olacaktır.
tohuwawohu

Herhangi bir çözüme açığım, ancak
Calc'ta

Yanıtlar:


2

OP yorumlarında bir komut dosyası kullanmaktan bahsedersiniz. Bu VBa, sonuçları başka bir sayfaya kaydederek yapar.

Makineniz VBa'yı desteklemese bile, komut dosyası size bir fikir verebilir, böylece tercih ettiğiniz dilde taşıyabilirsiniz.

Unutma, VBa ile geri alma genellikle işe yaramaz, bu yüzden önce dosyanın bir kopyasını yedek olarak kaydet !!

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

Orijinal (Sayfa1)

görüntü tanımını buraya girin

VBa'yı çalıştırdıktan sonra, sayfa2 benziyor

görüntü tanımını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.