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ść

  • 38330 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, Arctic Liquid Freezer III 360, 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 @ ReFS; 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ść

  • 38330 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, Arctic Liquid Freezer III 360, 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 @ ReFS; 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, 176 gości