vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 18 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Dzielenie arkusza Excel.


otwartyotwarty rozpoczął: analog postów: 16



napisał: globii
postów: 8


umieszczony:
6 września 2006
04:01

  
Sory 11100, pomyłka. I tak jak pisałem. Czas jest lepszy, bynajmiej na mojim sprzęcie.
napisał: globii
postów: 8


umieszczony:
5 września 2006
15:54

  
Do Artika

Stworzyłem baze. Wypełniłem ją do 1100-nego rekordu, 35 różnymi nazwami. Zaczełem testować twoje macra:

- Sub LiczPrzezFiltr()
- Sub LiczPrzezKolekcje()

Przez filtr wyszukało mi w niecałą sek, a przy pomocy kolekcji, ponad sek. Oczywiście tylko unikatowe rekordy.

Pozdrawiam
napisał: analog
postów: 6


umieszczony:
5 września 2006
10:01

  
Wielkie dzieki Artik i Globi. Smiga az milo popatrzec.
A tak swoja droga to mozecie polecic jakas dobra lekture z tego tematu?
napisał: analog
postów: 6


umieszczony:
4 września 2006
13:17

  
Sory Artik, ale nie sprawdzalem bo nie na swoim kompie pracuje i nie mam dostepu do Outlooka.
Globi tez sory za zasmiecanie, odebralem poczte i juz troche sie wyjasnilo :)
napisał: analog
postów: 6


umieszczony:
4 września 2006
11:41

  
Przy Workbooks("duży").activate wywala mi Run time error '9'.
Poza tym mam jeszcze pytanko: jak zrobic zeby tworzyl nazwe tego pliku w zaleznosci od nazwy arkusza, np: "nazwa arkusza"."$indeks$".xls ?
napisał: globii
postów: 8


umieszczony:
2 września 2006
17:36

  
Miałem kiedyś podobny problem. Udało mi się wymyśleć coś takiego. Niestety te makra działają dosyć powoli. Jak na razie jestem początkujący. Może ktoś ma sposub jak je przyśpieszyć.

Pierwsze makro tworzy nowe pliki.

Sub Nowe_pliki()
    Dim index As String
    Dim ile As Long
    Dim i As Long
    Application.ScreenUpdating = False
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    ' Przy pomocy filtra zaawansowanego kopiuje nie powtarzające się dane do ostatniej kolumny
    Range("A2:A7000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
    ("A2:A7000"), CopyToRange:=Range("IV2"), Unique:=True
    ile = Application.CountA(Range(Cells(1, 256), Cells(7000, 256))) + 1
    Range("iu2") = ile
    'Póżniej na podstawie tych danych twoże nowe pliki
    For i = 2 To ile
        Range(Cells(i, 256), Cells(i, 256)).Activate
        index = ActiveCell.Value
        Workbooks.Add
        ActiveWorkbook.SaveAs Filename:="C:\" & index & ".xls"
        ActiveWorkbook.Close
        Workbooks("duży").Activate
    Next i
    
    Rows("1:1").Delete
    Selection.Delete Shift:=xlUp
    Columns("IU:IV").ClearContents
    Application.ScreenUpdating = True

End Sub



Drugie makro kopiuje z dużego pliku, i wkleja do plików o nazwach,
utworzonych powyższym macrem.

Sub wyślij()
    Dim index As String
    Dim bz As Long
    Dim ile As Long
    Dim i As Long
    Dim koniec As Long

    Application.ScreenUpdating = False
    Range("A1:A7000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
                     ("A1:A7000"), CopyToRange:=Range("IV1"), Unique:=True
    ile = Application.CountA(Range(Cells(1, 256), Cells(7000, 256)))
    Range("iu1") = ile

    For i = 1 To ile
        koniec = 1

        Range(Cells(i, 256), Cells(i, 256)).Activate
        index = ActiveCell.Text
        Workbooks.Open Filename:="c:\" & index & ".xls"

        Do
            Workbooks("duży").Activate

            Range(Cells(koniec, 1), Cells(koniec, 1)).Activate
            If ActiveCell.Text = "" Then Exit Do
            If ActiveCell.Text = index Then

                Range(Cells(koniec, 1), Cells(koniec, 254)).Copy
                Workbooks(index).Activate
                Worksheets("arkusz1").Activate

                bz = 1
                Do While Cells(bz, 1) <> ""
                    bz = bz + 1
                Loop

                Worksheets("arkusz1").Range(Cells(bz, 1), Cells(bz, 1)).Activate
                ActiveCell.PasteSpecial
            End If

            Workbooks("duży").Activate
            koniec = koniec + 1
        Loop

        Workbooks(index).Activate
        Columns("a:b").Select
        Selection.NumberFormat = "m/d/yyyy"
        ActiveWorkbook.Save
        ActiveWindow.Close
    Next i

    Application.ScreenUpdating = False

End Sub





Pozdrawiam
napisał: analog
postów: 6


umieszczony:
1 września 2006
16:04

  
Aha zapomnialem dodac, jesli macie jaka ksiazke godna polecenia ktora by mi pomogla w takich rzeczach, to smialo mowcie. Bo jest pewnie ich sporo, a nie mam zamiaru wydawac kupy kasy na 10 pozycji:)
napisał: analog
postów: 6


umieszczony:
1 września 2006
16:01

  
1. Maksymalnie bedzie ok. 7000 rekordow.
2. Sa posortowane wg. dwoch pierwszych kolumn. Jednak najwazniejsze by przy tworzeniu nowego plik, wrzucal tak wszystkie rekordy o tych samych dwoch pierwszych kolumnach.
3. W jednym rekordzie jest ok 16 pol.
4. Tak musza byc tworzone nowe pliki ktore beda nazywane tak jakie beda nazwy dwoch pierwszych kolumn w arkuszu pierwotnym.

Jak CI by to pomoglo to daj mi maila to Ci przesle probke.
napisał: analog
postów: 6


umieszczony:
1 września 2006
11:19

  
Witam.
Mam taki problem. Otoz chodzi o to ze posiadam jeden wielki arkusz Excela (*), ktory musze podzielic na kilka mniejszych. Wszystkie rekordy z takim samym polem A wrzucane bylyby do jednego pliku. Nazewnictwo nowych mniejszych plikow bedize brane z konkretnych pol z *. Wygladalo by to tak:

Poczatkowy plik:
nazwa1 | data1 | data2 |
nazwa1 | data3 | data4 |
nazwa2 | data1 | data2 |

Po podzieleniu:
-plik nazwa1:

data1 | data2 |
data3 | data4 |

-plik nazwa2:

data1 | data2 |

Z gory dzieki za pomoc.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z