Excel’de “çıkarmayı” veya “geri dönmeyi” nasıl sağlar?


66

Bu gibi görünen verilerim var:

Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1  | NY   | CA   | TX   | IL
2  | WA   | OR   | NH   | RI

Ve bunu buna dönüştürmek istiyorum:

Id | LocNum | Loc
---+--------+----
1  |   1    | NY
1  |   2    | CA
1  |   3    | TX
1  |   4    | IL
2  |   1    | WA
2  |   2    | OR
2  |   3    | NH
2  |   4    | RI

Excel 2007'de bunu yapmanın en kolay yolu nedir?


Yanıtlar:


69

Bunu bir pivot tabloyla yapabilirsiniz.

  1. Bir "Çoklu Birleştirme Aralıkları Özet Tablo." Oluşturun. (Yalnızca ile Pivot Tablo Sihirbazı. Callup üzerinde ALT+ D, P2007 Excel)
  2. "Kendi sayfa alanlarımı oluşturacağım" seçeneğini seçin.
  3. Verilerinizi seçin.
  4. Genel toplam değerin üzerine çift tıklayın - Row Grand ve Column Grand'ın kesişme noktasında, pivot tablonuzun sağ alt köşesinde.

Özet tablonuzdaki tüm verileri, aradığınız şekilde aktarılan yeni bir sayfa görmelisiniz.

Datapig teknolojileri, gerçekte ihtiyacınız olandan daha karmaşık olan adım adım yönergeler sunar - örneği, veri kümesinin yalnızca bir kısmını aktarır ve TextToColumns ile birleştirilen pivot tekniğini kullanır . Ancak çok fazla resim var.

Bir pivot tablonun verileri gruplayacağını unutmayın. Gruplandırılmamasını istiyorsanız, bunu yapmanın tek yolu pivot masasını kopyalamak ve değerler olarak "özel" yapıştırmaktır. Boşlukları aşağıdaki gibi bir teknikle doldurabilirsiniz: http://www.contextures.com/xlDataEntry02.html


Cevabınız için teşekkürler, ama burada ne dediğinizi tam olarak bilmiyorum. Soruma örnek olarak, Satır Etiketleri, Sütun Etiketleri, Değerler ve Rapor Filtresi için ne kullanırım?
Devuxer

Id Satır Etiketlerine ve Loc1'den Loc4'e Kolon Etiketlerine koyarsam, sağ alt hücreyi (Genel Toplamların kesişimi) tıklayın, bu tabloyla yeni bir sayfa oluşturur, ancak istediğim bu değil. Temel olarak normal pivot tablonun bir kopyası.
Devuxer

Üzgünüm - kritik bir veri parçası bıraktım. Pivot Tablo gerekir bu durumda pekiştirmek için hiçbir şey olsa bile, bir 'çoklu konsolidasyon aralığı' türü pivot tablo olabilir.
DaveParillo

4
Tamam tamam, yardımına baktım ve Excel 2007'deki eski Pivot Tablo Sihirbazı'nı almanın arka kapı yolunu buldum (ALT + D + P tuşlarına basmanız gerekir). Şimdi adımlarınızı takip edebiliyorum ve işe yarıyor. Yardımınız için teşekkürler!
Devuxer


7

Verileriniz bir Excel Pivot Tablosu değil, yalnızca veri ise, bazı basit VBA kodlarıyla "çıkarmak" isteyebilirsiniz. Kod, adlandırılmış iki aralığa, Kaynak ve Hedef'e bağlıdır. Kaynak, çıkarmak istediğiniz verilerdir (örn. Sütun / satır başlıkları hariç, örneğin örnekteki NY-RI) ve Hedef, sonucunuzu yerleştirmek istediğiniz ilk hücredir.

Sub unPivot()
Dim oTarget As Range
Dim oSource As Range
Dim oCell As Range

Set oSource = Names("Source").RefersToRange
Set oTarget = Names("Target").RefersToRange

For Each oCell In oSource
    If oCell.Value <> "" Then
        oTarget.Activate
      ' get the column header
        oTarget.Value = oCell.Offset(-(oCell.Row - oSource.Row + 1), 0).Text 
      ' get the row header
         oTarget.Offset(0, 1).Value = oCell.Offset(0, _
           -(oCell.Column - oSource.Column + 1)).Text 
      ' get the value
        oTarget.Offset(0, 2).Value = oCell.Text 
      ' move the target pointer to the next row
        Set oTarget = oTarget.Offset(1, 0) 
    End If
Next
Beep
End Sub

1
Bunun için teşekkürler. İstisnai olarak çalışıyor ve beni çok zaman kazandırıyor.
tigrou

Teşekkür ederim!! bu sadece sihir! Benim için hiç işe yaramayan baş döndürücü raporlar ile jigiry-pokery'den çok daha iyi
trailmax

1
Bu harika görünüyor, ama en iyi söyleyebileceğim gibi, sadece bir satır başlığına sahip bir Tablo için işe yarayacak. Örnekteki tablo birden fazla satır başlığına sahipse, Id alanına ek olarak "SubId" olduğunu varsa, bu işe yaramaz. Bu durumda çalışması için değiştirmenin kolay bir yolu var mı?
Chris Stocking,


4

Excel 2010'da oldukça hoş bir çözüm var, sadece pivot masa ile biraz oynamanız gerekiyor.

Verilerinizden bu ayarlarla bir pivot tablo oluşturun:

  • alt toplam yok, genel toplam yok
  • rapor düzeni: sekmeli form, tüm öğe etiketlerini tekrarlayın
  • ihtiyacınız olan tüm sütunları ekleyin, dönüştürmek istediğiniz sütunları sağda tutun
  • dönüştürmek istediğiniz her sütun için: açık alan ayarları - düzen ve yazdırma sekmesinde: "öğe etiketlerini anahat biçiminde göster" i seçin ve altındaki her iki onay kutusunu işaretleyin
  • Masanızı ayrı bir yere kopyalayın (sadece değerler)
  • orijinal verilerinizde boş hücreler varsa, en sağdaki sütundaki boş değerleri filtreleyin ve bu satırları silin (istediğiniz şekilde çalışmadığından pivot tabloya filtre uygulamayın!)

1
Bu, eğer 2010 ve üstü iseniz ve kesinlikle arayüzde belli değilse, en iyi cevap budur. Harika Bul - maalesef yalnızca bir oy hakkım var!
jkf

3

Şimdiye kadar bulduğum en iyi şey şudur:

Id   LocNum  Loc
---------------------------------
1    1       =INDEX(Data,A6,B6)
1    2       =INDEX(Data,A7,B7)
1    3       =INDEX(Data,A8,B8)
1    4       =INDEX(Data,A9,B9)
2    1       =INDEX(Data,A10,B10)
2    2       =INDEX(Data,A11,B11)
2    3       =INDEX(Data,A12,B12)
2    4       =INDEX(Data,A13,B13)

Bu işe yarar, ancak Kimlik ve LocNum'ları manuel olarak oluşturmam gerekiyor. Daha otomatik bir çözüm varsa (bir makro yazmak dışında), lütfen bana ayrı bir cevap verin.


2

Verilerinizin boyutları sorunuzda verilen örnekteki gibi ise, OFFSET kullanarak aşağıdaki formüller size gerekli sonucu verecektir:

varsayarsak

1 | NY | CA | TX | IL

2 | WA | VEYA | NH | ri

A2: E3 aralığında

= OFFSET ($ A $ 2-YER ((SIRA (A2) -ROW ($ A $ 2)) / 4,1), 0)

F2’de

= MOD (SIRA (A2) -ROW ($ A $ 2), 4) +1

G2’de

= OFFSET ($ B $ 2-YER ((SIRA (B2) -ROW ($ B $ 2)) / 4,1), MOD (SIRA (A2) -ROW ($ A $ 2), 4))

H2’de söyleyin.

Sonra bu formülleri gerektiği kadar aşağıya kopyalayın.

Bu, düşünebildiğim en kolay, saf, yerleşik formül çözümüdür.


1

"Loc" sütununu almış gibi görünüyorsunuz (ilk cevabınız ile kanıtlandı) ve şimdi diğer iki sütunu almak için yardıma ihtiyacınız var.

İlk seçeneğiniz basitçe ilk birkaç (örneğin, 12) satırı bu sütunlara yazıp aşağı sürüklemektir - bence Excel bu durumda doğru olanı yapar (bu testi kesin olarak test etmedim).

Bu işe yaramazsa veya daha fazla programcı-y istiyorsanız, row () işlevini kullanmayı deneyin. Kimlik sütunu için "= Floor (satır () / 4)" ve LocNum sütunu için "= mod (satır (), 4) +1" gibi bir şey.


1

Döndürülen verileri bir veritabanı tablosuna geri döndürmek veya tersine çevirmek için parametrik bir VBA dönüşüm aracı vardır, lütfen bkz.

http://www.spreadsheet1.com/unpivot-data.html


1
Süper Kullanıcıya Hoşgeldiniz! Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantıyı sağlamak tercih edilir.
Peachy

1

İşte, bir Pivot Tablosunu normalleştirmek için, çıkarmak için güzel bir araçtır.

Normalisieren von Pivot Tabellen

Umut ediyorum bu yardım eder.


1
SuperUser'a Hoşgeldiniz! Bağlandığınız araç bir çözüm sunarken, bu yayın yalnızca bağlantı etkin kaldığı sürece kullanışlıdır. Gönderinizin geleceğe yararlı olmasını sağlamak için, lütfen cevabınızı, ürünle ilgili ek bilgileri içerecek şekilde, soruda açıklanan sorunu çözmek için nasıl kullanacağınızı da içerecek şekilde düzenleyin . Teşekkürler!
Excellll

1

@DaveParillo cevap tek bir sekme tablosu için en iyi cevaptır. Buraya bazı ekstralar eklemek istedim.

Birden çok sütun için, unpivot sütunlarından önceki

Bu yöntem çalışmıyor.

Youtube, soru gibi basit verileri ortaya çıkardı

Bu, nasıl basit bir şekilde yapıldığını gösteren bir youtube videosudur. Kısayolu eklemeyle ilgili kısmı atladım ve DaveParillo'nun cevabında bulunan @devuxer kısayolunu kullandım.

https://www.youtube.com/watch?v=pUXJLzqlEPk


3
Cevabınızın özü bir videoya bir bağlantıdır ve içeriği tanımlanmamıştır. Bağlantı koparsa veya kullanılamıyorsa, cevabınızın değeri yoktur. Lütfen cevabınıza gerekli bilgileri ekleyin ve bağlantıyı sadece atfetme ve araştırma için kullanın.
fixer1234

-2

Bundan daha basit. İstediğiniz aktarımı elde etmek için "Özel Yapıştır ..." bölümündeki "Transpose" seçeneğini tıklamanız yeterlidir.


1
Bu işe yaramaz.
zx8754
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.