Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Przesunięty przez: Kaper
02-03-2021, 16:00
VBA Makro filtrujące i zapisujące osobny plik
Autor Wiadomość
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 02-03-2021, 14:58   VBA Makro filtrujące i zapisujące osobny plik

Szukam makra, które by przefiltrowało ten zamieszczony plik po kolumnie "K" i wynik zapisało w oddzielnym pliku pod nazwą przefiltrowaną. Czyli stworzyło by plik Kraków Bazar Gospodarstwo gdzie by były tylko dane z Kraków Bazar Gospodarstwo i zapisało go i zamknęło, później stworzyło by kolejny plik po nazwą Kraków Bazar Kultura itd aż wyczerpią się wszystkie możliwości wyboru w kolumnie "K". Niestety utrudnieniem jest to, że co miesiąc w pliku mogą być inne wartości w kolumnie "K" więc makro musiało by to jakoś sprawdzać.

roboczy.xlsx
Pobierz Plik ściągnięto 7 raz(y) 19.6 KB

roboczy.xlsx
Pobierz Plik ściągnięto 12 raz(y) 19.6 KB

ID posta: 401294 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 797 razy
Posty: 4311
Wysłany: 02-03-2021, 15:54   

Temat założyłeś w dziale: "Mam problem z makrem"

Odp.: nie masz żadnego problemu > nie masz żadnego makra.

A tak "na szybko": TP (Tabela Przestawna) nie załatwiłaby sprawy?
.

Wątek przenoszę.
umiejead

.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 401297 Skopiuj do schowka
 
 
kuma 
Excel Expert


Wersja: Win Office 2010
Pomógł: 1453 razy
Posty: 4171
Wysłany: 02-03-2021, 18:12   

Jest sporo niejasności.
darko2000 napisał/a:
Niestety utrudnieniem jest to, że co miesiąc w pliku mogą być inne wartości w kolumnie "K" więc makro musiało by to jakoś sprawdzać.
Jak będą inne to zapewne stworzony powinien być nowy skoroszyt z nazwą z kol. 'K'.
Jeśli to mają być raporty miesięczne to powinny być jeszcze zapisane z datą (miesiącem i rokiem).
Czy w kolejnych miesiącach, jeśli powtarzają się nazwy w kol. 'K', mają być dopisywane dane do istniejących już plików?
Dlaczego nie ma nagłówków, zapomniał? ;-)
Musisz to wszystko przemyśleć, jeśli chcesz, abyśmy pomogli Ci stworzyć takie raporty..
_________________
Pozdrawiam.
ID posta: 401308 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 02-03-2021, 19:45   

nagłówków nie ma ale mogą być jakiekolwiek (nie wiem jak wstawić na tym etapie plik nie widzę takiej opcji w odpowiedzi) też myślałem o tym żeby makro co miesiąc dodawało nowy arkusz i kopiowało tam wartości z "K" i kasowało duplikaty i to mi się udało zrobić tylko nie wiem jak dalej zrobić żeby pętla brała po kolei wartości z tego dodatkowego arkusza i filtrowała pierwszy arkusz no i następny krok jak przefiltrowane dane zapisać jako osobny plik (pewnie jakaś kolejna pętla), co miesiąc mają być nowe pliki (więc może w nazwie nowych plików przydała by się data) nic nie ma być dopisywane do starych plików
ID posta: 401319 Skopiuj do schowka
 
 
kuma 
Excel Expert


Wersja: Win Office 2010
Pomógł: 1453 razy
Posty: 4171
Wysłany: 02-03-2021, 22:55   

Daj załącznik z tym co już zrobiłeś, co działa (jak piszesz) i pokaż jak ma wyglądać przykładowy zapisany plik z jakimiś danymi z kol. 'K'.
Z Twojego opisu to właściwie nie bardzo rozumiem jak to ma biegać.
_________________
Pozdrawiam.
ID posta: 401337 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 03-03-2021, 10:51   

przesyłam z kodem to jest końcówka dużego programu ale właśnie tu utknąłem. to makro tworzy Arkusz 2 do którego zgrywa wszystko co jest w kolumnie K i kasuje duplikaty, myślałem że może da się napisać takie makro, które weźmie wartość "A2" z Arkusza2 czyli "Warszawa Spożywczy słodkie" wróci do Arkusza1 przefiltruje po kolumnie "K" czyli wybierze wszystko co ma w "K" "Warszawa Spożywczy słodkie" utworzy nowy plik wklei tam te dane przefiltrowane, zapisze pod nazwą "Warszawa Spożywczy słodkie + data utworzenia", zamknie nowo utworzony plik itd. czyli weźmie wartość "A3" z Arkusza2 czyli "Warszawa Spożywczy słone" przefiltruje Arkusz1 po tej wartości utworzy kolejny nowy plik i zapisz go pod nazwą "Warszawa Spożywczy słone + data"i będzie tak robił (pewnie jakaś pętla) gdy nie natrafi na pustą wartość czyli w Arkuszu2 komórka "A29". Wynikiem tego ma być 27 nowych plików mogą się zapisywać np w odrębnym katalogu "wynik" ja to tak sobie wymyśliłem ale może nie trzeba tworzyć Arkusza2 tylko Makro samo sobie wybierze unikalne wartości z kolumny "K" i będzie jakoś filtrowało i tworzyło 27 nowych plików? Za miesiąc tych unikalnych wartości w kolumnie "K" może być tylko 20 więc powstanie 20 nowych plików które będą różniły się w nazwie datą i zapiszą się w katalogu "wynik"

roboczy.xlsm
Pobierz Plik ściągnięto 6 raz(y) 27.25 KB

ID posta: 401354 Skopiuj do schowka
 
 
kuma 
Excel Expert


Wersja: Win Office 2010
Pomógł: 1453 razy
Posty: 4171
Wysłany: 03-03-2021, 20:36   

W moim rozwiązaniu nie jest potrzebna kolumna 'K', ani arkusz 2.
Jeśli pozostawisz sobie kol. 'K', to cała kol. 'J' musi być pusta.
Pliki będą nadpisywane, gdy uruchomisz procedurę w danym dniu kolejny raz.
Kod:
Sub Raport_kuma()
    Dim a(), k, v
    Dim d As Object
    Dim i As Integer
    Dim ms As String, path As String
    Dim rngHd As Range
   
    'domyślną ścieżką jest ścieżka do  folderu, w którym umieścisz ten skoroszyt 'roboczy_kuma'
    ' lub podaj inną gdzie mają zostać zapisane nowe skoroszyty, np.:  "c:\Users\User\Downloads\Wynik\"
    path = ThisWorkbook.path & "\"
   
    Application.ScreenUpdating = False
    Set d = CreateObject("Scripting.Dictionary")

    With ThisWorkbook.Sheets("Arkusz1").[a1].CurrentRegion
        Set rngHd = .Rows(1)
        a = .Value
        For i = 2 To UBound(a, 1)
            ms = a(i, 1) & " " & a(i, 3)
            If Not d.exists(ms) Then
                Set d(ms) = .Cells(i, 1).Resize(, 9)
            Else
                Set d(ms) = Union(d(ms), .Cells(i, 1).Resize(, 9))
            End If
        Next
    End With
    For Each k In d.keys
        Workbooks.Add
        With ActiveWorkbook.Sheets(1)
            rngHd.Copy
                .[a1].PasteSpecial xlPasteColumnWidths
            rngHd.Copy .Cells(1)
            d(k).Copy .[a2]
           
            Application.DisplayAlerts = False
           
            .SaveAs Filename:=path & k & "_" & Date & ".xlsx", CreateBackup:=False
            ActiveWorkbook.Close
           
            Application.DisplayAlerts = True
        End With
    Next
    Set d = Nothing
    Set rngHd = Nothing
    MsgBox "Raport dla działów zrobiony"
End Sub


roboczy_kuma.xlsm
Pobierz Plik ściągnięto 9 raz(y) 26.32 KB

_________________
Pozdrawiam.
ID posta: 401394 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 03-03-2021, 21:30   

wielkie dzięki, wszystko działa rewelacyjnie
ID posta: 401396 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 04-03-2021, 10:48   

mam jeszcze jedno pytanie ta komęnda

"With ThisWorkbook.Sheets("Arkusz1").[a1].CurrentRegion"

odnosi się do Arkusza1 w bieżącym pliku, czyli w tym przypadku do "robocz_kuma.xlsm" a jak zrobić żeby odnosiła się do innego pliku w tym samym katalogu np. nazywał by się "robocz_kuma2.xlsm"
ID posta: 401423 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 04-03-2021, 11:07   

makro będzie odpalane z innego pliku i myślałem, że sprawę załatwi dopisanie na początku kodu czegoś takiego

Workbooks.Open fileName:="c:\podzial\roboczy_kuma.xlsm"
Windows("roboczy.xlsx").Activate
Sheets("Arkusz1").Select

ale wywala błąd w:
With ThisWorkbook.Sheets("Arkusz1").[a1].CurrentRegion
ID posta: 401426 Skopiuj do schowka
 
 
darko2000 
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 04-03-2021, 11:11   

oczywiście miało być

Workbooks.Open fileName:="c:\podzial\roboczy_kuma.xlsm"
Windows("roboczy_kuma.xlsm").Activate
Sheets("Arkusz1").Select
ID posta: 401427 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe