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

EXCEL - funkcja lub makro

robert55555 12 Lut 2016 17:24 1194 18
  • #1 12 Lut 2016 17:24
    robert55555
    Poziom 7  

    Do kolegów i koleżanek zwracam z prośbą o pomoc.
    Exel 2010 jaki używam.

    Mam zeszyt o nazwie "Wzor program do składnic". W tym zeszycie są arkusze o następujących nazwach: "Informacja", "DANE", "ZASTĄP", "SCALANIE", "DATY_SKRAJNE", "SPIS".

    W tych arkuszach znajduje się wiele funkcji, które miały mi pomóc w uzyskaniu efektu jaki znajduje się w arkuszu "SPIS".

    Efekt uzyskałem nie do końca zadawalający.
    W arkuszu "SPIS" mam następujące problemy, które raczej nie uzyskam za pomocą funkcji w exelu, lub nie znam takich funkcji.

    Wyjaśnienia problemów:
    W arkuszu "SPIS" w kolumnie C nazwiska i imiona powinny być pogrubione i wyśrodkowane, pozostałe dane jakie wsytępują w zależności od komórki w kolumnie C, mam tu na myśli "Wniosek o przyznanie płatności w ramach systemów wsparcia bezpośredniego" i/lub "Wniosek o przyznanie płatności z tytułu obszarów o nie korzystnych warunkach gospodarowania(ONW)" i /lub "Wniosek dotyczący programu rolnośrodowiskowego" - Powinny zaczynać od brzegu danej komórki.
    W przypadku jak mam taki tekst w jakieś komórce kolumny C " Kontynuacja wniosku PRS rozpoczętego w 2010 roku, który został zarchiwizowany syg.akt: 17/251" powinnien być również pogrubiony.(przykład arkusz"WZOR_SPIS, przykład dla komórek C21:c25)

    Następny problem do arkusza "SPIS". Jak można zrobić by wysokość wiersza dopasowała się do zawartości jaka występuje w danej komórce.

    Następny problem jaki mam dotyczy arkusza o nazwie "DATY_SKRAJNE" w kolumnie G: dla znaku spraw PRŚ (jest to kontunuacja/10/ oznacza kiedy rozpoczeło się zobowiązanie) 0111-69110-0111-00000001/10/13
    nie wiem jaki sposób mogę wyciągnąć 10 i w następnej koumnie J powinno być 2010. Wyjaśnienie jest do komórki G4 i 2010 powinno być w J4.
    Problem z funckja to nie jest ale w tej kolumnie mam np znak sprawy 0111-69110-0111-00000002/13 i jak zastosuje funkcje to mi dane wytnie, których nie potrzebuje.
    Jesli w kolumnie G fragment tekstu znaku sprawy jest /09/ w odpowiedniejkomórce kolumny J wstawia 2009, /11/ wstawia 2011. /12/ wstawia 2013.

    Jak ma to wszystko działać-wyjaśnienia.
    W arkuszu "DANE" w kolumnie A wklejam ok 20000 nazwisk, w kolumnie B wklejam ok 20000 znaków spraw, w klumnie C wklejam około 19000 znaków, w kolumnie D wklejam około 10000.(w tym 3000 jest kontynuacji, reszta rozpoczynaw 2013 roku swoje zobowiązanie.) i momencie wklejenia za pomocą funckji mam uzyskać efekt w arkuszu "SPIS" z tym ze strona do wydruku dostosowuje do ilości danych.

    W arkuszu "DATY_SKRAJNE" dane do kolumn B, D, E, I musze ręcznie wpisać lub wkleic z innego exela jak będe miał komplet danych.

    W arkuszu "SPIS_WZOR" dałem wzor wyjasnienia. Ma pokażać o co mi chodziło.

    Nie wiem czy nie łatwiej napisać makro, które da ten sam efekt z pominięciem funkcji? Tego nie wiem, nie znam się na VBA.

    Przepraszam, za długie tłumaczenie i czasami zawiłe(niezrozumiałe) dla kolegów i koleżanek. Efekt jaki uzyskałem można było uzyskać "angażująć mniej funkcji" sorki za określenie lub też w łatwiejszy sposób.

    Dodano po 16 [minuty]:

    Prosze w arkuszu "DANE" w zmienić imie i nazwisko, zmienić znak sprawy w komórce B3, wpisać znak inny w komórce C3 i dla komórkiD3(np wpisać 0222-69110-0222-00000005/11/13. Zobaczyć jak wszystko się zmienia. Efekt uzyskany w arkuszu "SPIS".

    0 18
  • #2 12 Lut 2016 18:11
    Zbych034
    Poziom 36  

    Załącz to co masz (część danych możesz zmienić na fikcyjne), inaczej ciężko będzie pomóc.

    0
  • #3 12 Lut 2016 18:57
    robert55555
    Poziom 7  

    Dziekuje za opisanie. Nie jestem wstanie wstawic wszystkich danych. Dane są w pracy. Poza tym nie wymysle tyle fikcyjnych danych. Zarys danych jest jak ma wyglądać, tylko zwiększy się ilość tych danych. Te dane są wymyślone. Ogólny schemat przedstawiłem w zalaczniku podpiętym.

    0
  • #4 13 Lut 2016 13:43
    robert55555
    Poziom 7  

    Wypełniłem Arkusz "dane". tyle ile mniej wiecej powinno być danych. 99% danych takie same, ale tu nie oto mi chodzi. Kolega Zbych034 miał do mnie taka prośbę.

    0
  • #5 13 Lut 2016 14:45
    adamas_nt
    Moderator Programowanie

    robert55555 napisał:
    Ogólny schemat przedstawiłem w zalaczniku podpiętym
    A gdzie ten załącznik? Plik wersji >2003 załącz spakowany (zip/rar)

    0
  • #6 13 Lut 2016 16:21
    Zbych034
    Poziom 36  

    Też nie widzę załącznika :cry:

    0
  • #7 13 Lut 2016 20:18
    robert55555
    Poziom 7  

    Nawaliłem koledzy i za to przepraszam. Jestem od cięty od koma ma ponad tydzień. Albo wysle spakowany jak kolega adamas_net napisał w terminie późniejszym chyba ze mi wcześniej kompa naprawia. W arkuszu "Daty skrajne" wiem jak wyciagnac /10/ z tego, za pomocą funkcji, czyli ten problem zostal rozwiązany.
    Ogólnie problem z którym nie poradze to makro, do arkusza "SPIS" które dostosowuje wysokosc komorki do zawartości tekstu jaka w niej znajduje. Jak makro powinno dostosować jest w arkuszu "WZOR SPIS". Nazwisko i imie ma byc pogrubiona czcionka i wyśrodkowane, i jak jest tekst "Kontynuacja wniosku PRS rozpoczętego(jest jakiś rok) który zostal zarchiwizowany syg.akt:(tu podana jest jakas sygnatura)" tylko pogrubiony tekst.(o co mi chodzi jest w arkuszu"Wzor_spis", tam żeby pogrubić tekst i wyśrodkować zrobilem w oddzielnych komórkach, inaczej bym tego w exelu nie zrobil).

    I z tym mam problem. Nie wiem czy mozna cos takiego zrobić za pomocą funkcji exela? Czy potrzebne jest makro. Czytalem ze makrem mozna ale żeby komorki nie byly scalone. Dlatego tak wszystkie dane są w jednej komórce i przez to nie mogę pogrubić i wyśrodkować określonego tekstu. Nie wiem czy jasno napisalem.

    Dodano po 6 [minuty]:

    Czy nie będzie latwiej z makrem, które robi to wszystko co ja zrobilem za pomocą funkcji. Dla mnie to moze i lepiej by bylo. Najwazniejszy jest końcowy rezultat. Jak są pytania to odpowiem. Pisze ze smatfona.

    Dodano po 23 [minuty]:

    Nie wiem jak sie to stalo ze wogole nie ma załącznika

    Dodano po 2 [godziny] 19 [minuty]:

    wysyłam załącznik

    0
  • #8 13 Lut 2016 20:33
    robert55555
    Poziom 7  

    Zalacznik w końcu wyslany. Nie ma w nim arkusza "wzor_spis". Myślę ze tyle co napisalem będzie jasne, jak nie to odpowiem na pytania. Sorki za zamieszanie.

    0
  • #9 14 Lut 2016 15:35
    robert55555
    Poziom 7  

    Jakiś pomysl jak mozna rozwiazac mój problem?

    0
  • #10 14 Lut 2016 16:15
    marcinj12
    Poziom 40  

    robert55555 napisał:
    Exel 2010 jaki używam.
    Dlaczego zatem zapisujesz w formacie Open Office: .ods, nie w .xlsx?
    robert55555 napisał:
    W tych arkuszach znajduje się wiele funkcji, które miały mi pomóc w uzyskaniu efektu jaki znajduje się w arkuszu "SPIS".
    W załączniku nie znalazłem ani jednej funkcji, tylko sam tekst. Załącz taki plik, gdzie będą funkcje.

    0
  • #12 14 Lut 2016 18:23
    marcinj12
    Poziom 40  

    robert55555 napisał:
    W arkuszu "SPIS" w kolumnie C nazwiska i imiona powinny być pogrubione i wyśrodkowane
    Tego nie da się osiągnąć w rozsądny (czyt. szybki, prosty) sposób. Można za pomocą VBA uzyskać pogrubienie fragmentu tekstu w komórce, ale wycentrować można całą komórkę, nie jej fragment.
    Można ewentualnie próbować uzyskać pseudo-wyśrodkowanie, dostawiając pewną ilość spacji z przodu, ale to po pierwsze - wymusza ustaloną szerokość kolumny, a po drugie - zależy od rozmiaru i rodziny czcionki. A nawet wtedy będzie to przybliżone wycentrownanie, gdyż każda litera ma inną szerokość.
    Nie możesz po prostu rozbić jednego wpisu na kilka wierszy? Poscalać co potrzeba, a w tym opisie zostawić jedną komórkę na tekst przed nazwiskiem, drugą - wyśrodkowaną i pogrubioną - na nazwisko, a trzecią na tekst po nazwisku?
    robert55555 napisał:
    Jak można zrobić by wysokość wiersza dopasowała się do zawartości jaka występuje w danej komórce.
    Zwykle wystarczy podwójne kliknięcie w miejscu separatora oddzielającym dwa kolejne wiersze - przy lewym marginesie, gdzie znajdują się numery wierszy, np. między 19 a 20. Kursor zmienia wtedy symbol na kreseczkę z dwoma strzałeczkami w gorę i w dół. Można też zaznaczyć kilka wierszy czy nawet wszystkie i wykonać to dla wszystkich zaznaczonych wierszy jednocześnie. W VBA jest do tego funkcja Rows(x).AutoFit.
    Ale żeby to działało, nie możesz mieć scalonych kolumn, tak jak to (zupełnie niepotrzebnie) zrobiłeś z kolumnami C:G. Czemu po prostu nie rozszerzyłeś kolumny C?
    robert55555 napisał:
    nie wiem jaki sposób mogę wyciągnąć 10 i w następnej koumnie J powinno być 2010.
    Za pomocą funkcji: w komórkę H4:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #13 14 Lut 2016 19:47
    robert55555
    Poziom 7  

    Wiem jak wyciagnac/10/ za pomocą funkcji jeżeli. Liczy ilość znaków.(>28znakow ) i wyciągnę. Dlaczego w arkuszu"spis" czytalem ze jak bym poscalal komorki to podobno sie nie da. Myslalem na tym ze kazdy tekst jest w swojej komórce, wtedy będę mógl pogrubić nazwisko i imie i wyśrodkować, pogrubić tekst"kontynuacja..". To by pomoglo. Ale jak będę chcial rozciągnąć cala zawartość w arkuszu"spis" jaka jest w Np pod liczba porządkowa 1 to mi funkcja będzie przeskakiwala o kazda komórkę. Nie wiem czy moja wypowiedź jest dla kolegi jasna.

    Dodano po 10 [minuty]:

    Kolumny C w arkuszu"spis" nie moglem rozszerzyć bo takim mam wzor jaki mnie obowiązuje. Pytałem czy taki wzor jaki zrobilem moze zostać, przełożeni odpowiedzieli ze nie. Nazwisko ma byc pogrubione i wyśrodkowane.

    0
  • #14 14 Lut 2016 22:20
    marcinj12
    Poziom 40  

    robert55555 napisał:
    Najwazniejszy jest końcowy rezultat.
    vs
    robert55555 napisał:
    Pytałem czy taki wzor jaki zrobilem moze zostać, przełożeni odpowiedzieli ze nie. Nazwisko ma byc pogrubione i wyśrodkowane.
    To co w końcu jest ważniejsze?
    robert55555 napisał:
    Nazwisko ma byc pogrubione i wyśrodkowane.
    Najlepsze rozwiązanie już znasz - wstawić je w osobnym wierszu.
    robert55555 napisał:
    Ale jak będę chcial rozciągnąć cala zawartość w arkuszu"spis" jaka jest w Np pod liczba porządkowa 1 to mi funkcja będzie przeskakiwala o kazda komórkę.
    Zakłądając, że jeden "wiersz" rozbijesz na trzy wiersze, to zamiast przeciągać liczbę porządkową, wstaw w pierwszym wierszu 1, a w kolejnym formułę: = poprzednia_komórka + 1 i przeciągaj formułę. Potem możesz ją skopiować zastąpić wartościami.

    Jeśli chodzi o zwykłe formuły, to też można je przerobić tak, żeby dały się przeciągać. Widzę, że odwołujesz się do kolejnych numerów wierszy - można je skorelować z Lp i zamiast odwoływać się np. =DANE!B4 użyć funkcji ADR.POŚR do stworzenia odwołania do komórki: =ADR.POŚR("DANE!B" & A23), gdzie w A23 jest akurat Lp = 4
    Choć wymaga to trochę pracy, żeby każdy adres tak przerobić...

    PS. Zamiast wstawiać kilkanaście spacji w celu uzyskania efektu "przejścia" do kolejnej linii, lepiej użyć w złączeniu funkcji ZNAK(10).

    0
  • #15 15 Lut 2016 07:16
    robert55555
    Poziom 7  

    Piszac najwazniejszy jest efekt końcowy mialem na myśli zrobienie za pomocą funkcji lub makra, tak jak chcą przelozeni

    0
  • #16 15 Lut 2016 18:36
    robert55555
    Poziom 7  

    Dziekuje koledze za pomoc. Jak komputer wroci z naprawy postaram zrobić tak jak kolega poradzil. Niestety w pracy nie mam kiedy tego zrobić. W przypadku jak bede mial jakieś problemy mogę liczyć na kolegi pomoc lub innych osób?

    0
  • #17 15 Lut 2016 19:10
    marcinj12
    Poziom 40  

    robert55555 napisał:
    W przypadku jak bede mial jakieś problemy mogę liczyć na kolegi pomoc lub innych osób?
    Jeśli będziesz miał możliwość / chęć dostosowania pliku do sugerowanych rozwiązań - jak najbardziej. Ale jeśli będziesz próbował strzelać do komara z armaty bo "przełożony powiedział że tak ma być" - to myślę, że dużo pomocy tu nie uzyskasz... :]

    0
  • #18 23 Lut 2016 15:54
    robert55555
    Poziom 7  

    Rozumiem, że koledze @marcinj12 chodziło o tak zrobiony spis, jaki zrobiłem w "spis_wzor".

    Czy o to coś takiego chodziło koledze? W jaki sposób można przypisać funkcje aby wszystko się zgadzało? Czy można przypisać tak funkcje do lp. nr1 w spisie a potem przeciągnać i wszystko sie uzupełnia?

    0
  • #19 04 Mar 2016 15:59
    robert55555
    Poziom 7  

    marcinj12 napisał:
    wykle wystarczy podwójne kliknięcie w miejscu separatora oddzielającym dwa kolejne wiersze - przy lewym marginesie, gdzie znajdują się numery wierszy, np. między 19 a 20. Kursor zmienia wtedy symbol na kreseczkę z dwoma strzałeczkami w gorę i w dół. Można też zaznaczyć kilka wierszy czy nawet wszystkie i wykonać to dla wszystkich zaznaczonych wierszy jednocześnie. W VBA jest do tego funkcja Rows(x).AutoFit.
    Ale żeby to działało, nie możesz mieć scalonych kolumn, tak jak to (zupełnie niepotrzebnie) zrobiłeś z kolumnami C:G. Czemu po prostu nie rozszerzyłeś kolumny C?


    Zrobiłem wszystko jak kolega @marcinj12 mi radził. Funkcja Adr spełniła moje wymagania, ślicznie za nią dziękuje koledze.
    Mam problem z dostosowaniem wysokości komórek do jej zawartości. Tutaj pomysł kolegi nie wypalił. Nie zastosowałem scaleń w żadnej komórce i rada kolegi @marcinj12 nie pomogła.

    Ma ktoś pomysł jak można to zrobić?

    Dodano po 4 [minuty]:

    Musiał bym klikać w miedzy wszystkie wiersze żeby komórka dostosowała wyskość wiersza do jej zawartośći. Trochę klikania miałbym, jak można rozwiązać to inaczej, szybciej?

    0