Forum > Software > [Excel/Word] Zamiana kolumn na wiersze (nie transpozycja!).

Strona 1 z 1 1
skocz

djluke

  • djluke
  • wiadomość Moderator
  • Znawca sprzętu komputerowegoMiły gość

  • 38053 wypowiedzi

Wysłane 2012-12-04 20:40 , Edytowane 2012-12-04 20:42

Mam pewien spory dokument w układzie powiedzmy:

a1 a2 a3 a4
b1 b2 b3 b4
c1 c2 c3 c4
...
i potrzebuję go zamienić na dokument postaci:
a1
a2
a3
a4
b1
b2
b3
b4
c1
...
Czy jest jakiś prosty sposób na to? Czy trzeba/można nagrać makro?
Bo ręcznie to powiem że za dużo jest i mi się to nie widzi, zwłaszcza że potem muszę jeszcze dostosować zawartość i dalej modyfikować dokument...

Asus TUF Gaming X570 Plus, Ryzen 5800X, BeQuiet Dark Rock 4 Pro, 32GB Kingston Fury 3600MHz CL16, PowerColor RX 6700 XT Red Devil 12GB, SSD Samsung 980 Pro 1TB, WD WD80EZAZ, Seasonic Focus Plus Gold 650W, Fractal Design Define R6 USB-C, Razer BlackWidow Ultimate, Logitech MX Master 3; Windows 11 Insider; Samsung C32HG70; HP Color Laserjet Pro M281fdn.

jaqp

  • jaqp
  • wiadomość Użytkownik

  • 10 wypowiedzi

Wysłane 2012-12-04 21:12

Hmm na ile się orientuję to prostego sposobu nie ma - makro vba się kłania. Z samym nagrywaniem to też pewnie nie do końca, bo będziesz musiał wszystko przeklikać:) Jeśli jesteś w stnie sobie dopasowac makro to daj znać to Ci testowego excelka podeśle \"\cfaniak\"

JoeBlack

Wysłane 2012-12-04 21:17

Próbowałeś scenariuszy w Excel?

XBOX360 Arcade Jasper+Dysk20Gb+SamsungPS42A457 / Samsung R520 (i5 2410M/gt520M)

JoeBlack

Wysłane 2012-12-04 21:33 , Edytowane 2012-12-04 21:35

Dla excel 2010:
Mając Twój pierwszy układ zaznaczamy cały interesujący Cię obszar.
Następnie Dane->Analiza Warunkowa->Menadżer scenariuszy->Dodaj->wpisujemy nazwę scenariusza->OK->OK->Podsumowanie->Zaznaczamy komóki wynikowe (w tym przypadku 12 komórek w jednej kolumnie)np.od A5 do A17->OK
Wyświetlony zostaje scenariusz.
Zaznaczamy wszystkie komórki, które nas interesują i kopiujemy do nowego arkusza w miejsce, które nas interesuje.

XBOX360 Arcade Jasper+Dysk20Gb+SamsungPS42A457 / Samsung R520 (i5 2410M/gt520M)

djluke

  • djluke
  • wiadomość Moderator
  • Znawca sprzętu komputerowegoMiły gość

  • 38053 wypowiedzi

Wysłane 2012-12-04 21:52

Tzn generalnie to ja mam LibreOffice, nazw własnych MS użyłem dla uproszczenia.

Asus TUF Gaming X570 Plus, Ryzen 5800X, BeQuiet Dark Rock 4 Pro, 32GB Kingston Fury 3600MHz CL16, PowerColor RX 6700 XT Red Devil 12GB, SSD Samsung 980 Pro 1TB, WD WD80EZAZ, Seasonic Focus Plus Gold 650W, Fractal Design Define R6 USB-C, Razer BlackWidow Ultimate, Logitech MX Master 3; Windows 11 Insider; Samsung C32HG70; HP Color Laserjet Pro M281fdn.

JoeBlack

Wysłane 2012-12-04 22:07

@djlukeNiestety ja używam tylko Excel MS. Na Libre nie pomogę. Chyba, że prześlesz plik i pomogę w przerobieniu

XBOX360 Arcade Jasper+Dysk20Gb+SamsungPS42A457 / Samsung R520 (i5 2410M/gt520M)

jaqp

  • jaqp
  • wiadomość Użytkownik

  • 10 wypowiedzi

Wysłane 2012-12-04 22:57

Ok jeśli libre obsługuje vba tak jak "Normalny" Excel, to


Sub kopiowanie_transpozycja()
'
' kopiowanie_transpozycja Makro
'
Dim count_rows As Integer
Dim rownumber As Integer
Range("A1").Select
Sheets("Arkusz1").Select
count_rows = Range(Selection, Selection.End(xlDown)).Rows.Count


Sheets("Arkusz1").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Arkusz2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

rownumber = 1
Do
Sheets("Arkusz1").Select
Range("A1").Offset(rownumber, 0).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Arkusz2").Select
Range("A1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

rownumber = rownumber + 1
Loop Until rownumber = count_rows
End Sub

zakładając, że Twoje dane są w arkuszu1, zaczynają się od komórki A1 i kopiowane są do Arkusza2

Jakby co proszę mnie poprawić:)

Gakudini

Wysłane 2012-12-08 23:25

Temat już zapewne nieaktualny, ale może ktoś będzie miał podobny problem :)
Brak "prawdziwego" Excela ogranicza możliwości, ale i wymusza proste rozwiązania:
W drugim arkuszu tworzymy kolumny: W (wiersz) i K (kolumna)
wypełniamy je wartościami:
W K
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
itd...
W kolejnej kolumnie odczytujemy dane z Wiersza W i kolumny K. Np. formułą:
=ADR.POŚR("Arkusz1!W"&A2&"K"&B2;FAŁSZ)
i gotowe.
Do wygenerowania Kolumn W i K można wykorzystać funkcję jeżeli().

Rozwiązanie nie jest może eleganckie, ale nie wymaga makr i powinno działać w każdym Excelu w Calcu OO też.

thor2k

  • thor2k
  • wiadomość Użytkownik

  • 1343 wypowiedzi

Wysłane 2012-12-10 15:14 , Edytowane 2012-12-10 15:17

To ja się podepnę z prośbą.
Może ktoś mi podpowie/podzieli się kawałkiem kodu jak osiągnąć efekt jak na załączonym obrazku


Przeszukuje kolumnę V (wartości 1 nie ma w kolumnie X. Next, biorę z kol V wartość 2, przeszukuję kol. X. Znajduję wartość 2 w kol X i wtedy kopiuję dane zaznaczone na żółto (dla łatwiejszego zrozumienia o co mi chodzi) tak żeby znalazły się w jednym wierszu z wartością w kol V ( w tym wypadku wartość 2) i analogicznie dalej z 3, wartość 4 już nie występuje w kol X więc nie da się znaleźć.
Please help... [mina kota ze Shreka]

Yesusik

Wysłane 2012-12-10 17:01

@thor2k

dla x1:
jeżeli(v=x,v)

dla x2:
jeżeli(v=x,y)
- oczywiście w miejsce v,x1,x2,x,y musisz podstawić odpowiednie pozycje komórek.
\"\spoko\"

よろしく

Gakudini

Wysłane 2012-12-11 12:31

Funkcja Excela to WYSZUKAJ.PIONOWO(V1;obszar;1;0)
Gdzie: V1 - komórka z kolumny V
obszar - nazwany obszar z danymi x,y - nazwanie tego obszaru jest istotnym ułatwieniem.
1 - numer koluny z obszaru 1 to kolumna X ( z niej pojawi się dana w wyniku)
0 - Bardzo ważne! funkcja ma znaleźć konkretne wartości.
jeśli wartości nie ma na liście będzie błąd.

mysiauek

Wysłane 2012-12-11 15:18

@Gakudini
I odpowiedzią na funkcję jest tylko pierwsza watrość z listy co jest sporym minusem jesli ktoś chce "wyszukać wiele".

Gakudini

Wysłane 2012-12-11 15:49

@mysiauek
Ale w pytaniu nie ma nic o kilku wystąpieniach :)

Strona 1 z 1 1
skocz

Kto jest online: 0 użytkowników, 357 gości