Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel - Nietypowa konwersja zakresu danych

22 Kwi 2016 09:54 561 6
  • Poziom 2  
    Witam

    Od dłuższego czasu borykam się z pewnym problemem i nie potrafię sobie poradzić. Otóż mam bazę kontrahentów, typu asortymentu oraz numerów seryjnych (w poście oczywiście zamieściłem wyimaginowane dane. Baza jest skonstruowana tak, że każdy wiersz dotyczy innego asortymentu detalicznie (wg numerów seryjnych), więc numer kontrahenta pojawia się w bazie tyle razy ile sztuk przypisanych jest do danego kontrahenta. Chciałbym przekonwertować jakoś te dane w taki sposób, aby każdy kontrahent mieścił się w jednym wierszu, a jego asortymenty były wyszczególnione w kolejnych kolumnach (jak w załączonym pliku). Danych jest sporo, bo kilkadziesiąt tysięcy numerów seryjnych. Czy da się to zrobić jakąś formułą? Szczerze mówiąc makr nie umiem. Bardzo proszę o pomoc.
  • Poziom 34  
    djkelvin napisał:
    Czy da się to zrobić jakąś formułą? Szczerze mówiąc makr nie umiem. Bardzo proszę o pomoc.


    Można to zrobić przy użyciu formuł :!:
    Znacznie mocniej się czuje w formułach excela, więc w sytuacji gdy miałem potrzebę utworzenia dla księgowości tzw księgi handlowej w oparciu o dwie tabele z bazy danych zrobiłem dużą tabelę wynikową, w której w każdej komórce umieszczona była formuła typu:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    i każda komórka wyszukuje sobie odpowiednie wartości z dwóch tabel źródłowych na podstawie określonych warunków :D

    Formuły były różne dla poszczególnych kolumn, więc tworzenie tej tabeli wynikowej było bardzo żmudne i moim zdaniem opłacalne tylko przy wielokrotnym jej wykorzystywaniu. Znacznie łatwiej podobny efekt można uzyskać poprzez bardziej złożoną kwerendę sql bezpośrednio z bazy danych.
  • Poziom 28  
    Witam,

    djkelvin napisał:

    Od dłuższego czasu borykam się z pewnym problemem i nie potrafię sobie poradzić. Otóż mam bazę kontrahentów, typu asortymentu oraz numerów seryjnych (w poście oczywiście zamieściłem wyimaginowane dane. Baza jest skonstruowana tak, że każdy wiersz dotyczy innego asortymentu detalicznie (wg numerów seryjnych), więc numer kontrahenta pojawia się w bazie tyle razy ile sztuk przypisanych jest do danego kontrahenta. Chciałbym przekonwertować jakoś te dane w taki sposób, aby każdy kontrahent mieścił się w jednym wierszu, a jego asortymenty były wyszczególnione w kolejnych kolumnach (jak w załączonym pliku). Danych jest sporo, bo kilkadziesiąt tysięcy numerów seryjnych. Czy da się to zrobić jakąś formułą? Szczerze mówiąc makr nie umiem. Bardzo proszę o pomoc.


    Czy ta przekonwertowana baza ma służyć do edycji, czy tylko ma służyć obliczeniom?

    Pozdrawiam
  • Poziom 2  
    Mamy 2 różne aplikacje agregujące dane. Z jednej muszę eksportować dane i ograniczenie polega na tym, że tylko tak jak w pierwszym arkuszu da się wygenerować wyjście (CSV), a druga, do której importuję plik nie ma połączenia z pierwszę, wymaga innego układu kolumn. Nie będzie to jednorazowe tylko cykliczne (kilka razy w miesiącu). Stąd moje pytanie, czy bez VBA się obejdzie :)
  • Specjalista - VBA, Excel
    djkelvin napisał:
    moje pytanie, czy bez VBA się obejdzie

    Myślę, że nie, ponieważ liczba kolumn dla różnych kontrahentow są mogą być różne.
    Tutaj i makrem nie jest tak łatwo to zrobić (nie w jednym przejściu bazy danych).
  • Poziom 28  
    djkelvin napisał:
    a druga, do której importuję plik nie ma połączenia z pierwszę, wymaga innego układu kolumn.


    A czy ta druga aplikacja wymaga stałego układu kolumn? Tak na marginesie, to excel ma stałą liczbę kolumn co jest ograniczeniem. :D
  • Moderator Programowanie
    W dość nieskomplikowany sposób można osiągnąć taki wynik:
    Excel - Nietypowa konwersja zakresu danych
    Trzy etapowe makro
    -wyszukiwanie unikatów w kolumnie B i zapisanie ich jako nagłówki kolumn w arkuszu wynikowym
    -wyszukiwanie unikatów w kolumnie A i zapisanie w kolumnie A
    -przypisanie Nr seryjnych do kontrahenta wg typu