GRY-Online.pl --> Archiwum Forum

Problem z Excelem i makrem

25.01.2005
14:18
[1]

Rendar [ Senator ]

Problem z Excelem i makrem

Potrzebuje pomocy kogoś biegłego w pisaniu makr Excela.

Otóż dajmy na to, że mamy arkusz. W kolumnie A mamy wpisane słowa (np imiona). Powiedzmy, że w komórki od a1 do a5 jest wpisane "Ania" a w komórki od a6 do a10 jest wpisane "Beata".
Teraz potrzebuję zrobic automat, który sprawdzi co jest wpisane w kolumnie A i gdy doleci do obszaru z wpisanymi "Beatami" wytnie go i przeniesie do nowego arkusza.

HELP!

25.01.2005
15:06
[2]

Swidrygajłow [ ]

k = 1000
r = 0
With Application
For i = 1 To k

If Sheets("Arkusz1").Cells(i, 1).Value = "monika" Then
Sheets("Arkusz1").Cells(i, 5) = i
Sheets("Arkusz1").Cells(i, 6) = Sheets("Arkusz1").Cells(i, 1)
Sheets("Arkusz1").Rows(i).Copy
r = r + 1
Sheets("Arkusz2").Rows(r).Insert Shift:=xlDown
Sheets("Arkusz1").Rows(i).Delete

i = i - 1
k = k - 1
End If

Next i


End With

25.01.2005
16:51
[3]

Rendar [ Senator ]

THX Swirdy - niezły jesteś :-)

Ale jest mały ból... ta petla szuka zadanej vartości (monika), a ja potrzebuje cosik takiego jak to, ale bez konieczności ścisłego określania tej wartości. To musi być taka jakby automatyczna zmienna.
Chodzi mi dokładnie o to, że mam sporo plików (pewnego rodzaju logi) właśnie w formie Excela.
Wyglądają one właśnie tak jak w podanym przykładzie (oczywiście jest tam po pareset lini każdego rodzaju). Potrzebuję każdą pozycję (np Ania) w osobnym arkuszu. Nie pytaj czemu nie mogę zrobić autofiltra, bo mnie normalnie o glebe rzuca, ale trza robić jak karzą :-(

25.01.2005
17:11
smile
[4]

Rendar [ Senator ]

Zrobiłem tak:

Sub Makro1()
Dim A As String

A = Cells(1, 1)

k = 1000
r = 0
With Application
For i = 1 To k

If Sheets("Arkusz1").Cells(i, 1).Value = A Then
Sheets("Arkusz1").Cells(i, 5) = i
Sheets("Arkusz1").Cells(i, 6) = Sheets("Arkusz1").Cells(i, 1)
Sheets("Arkusz1").Rows(i).Copy
r = r + 1
Sheets("Arkusz2").Rows(r).Insert Shift:=xlDown
Sheets("Arkusz1").Rows(i).Delete

i = i - 1
k = k - 1
End If

Next i


End With
End Sub




I właściwie można powiedzieć, że działa, ale jeszcze musze pokombinowac nad uniezależnieniem od nazwy arkusza. Problem jest wtym, że to nie są nigdy te same ilości danych. Czasem może być 100 Ani, 200 Beat i 500 Monik, a czasmi 150 Beat , 250 Swirdych, 200 Souli i 1000 Rendarów, więc ilość arkuszy też będzie różna. Optymalnie byłoby, gdyby sam sobie wstawiał odpowiednią ilość Sheets. Jak masz jakiś pomysł to baardzo będę wdzięczny :-)

26.01.2005
10:02
[5]

Swidrygajłow [ ]

Dim Imiona As New Collection
Dim Ok As Boolean
Dim a As String

k = 1000

Ok = False

With Application



For i = 1 To k
If Sheets(1).Cells(i, 1).Value <> "" Then

Ok = False
For j = 1 To Imiona.Count
If Sheets(1).Cells(i, 1).Value = Imiona.Item(j) Then
Ok = True
End If
Next j
If Ok = False Then
For z = 1 To Worksheets.Count
If Sheets(1).Cells(i, 1).Value = Worksheets(z).Name Then
Ok = True
End If
Next z
If Ok = False Then
Imiona.Add (Sheets(1).Cells(i, 1).Value)
Worksheets.Add after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Sheets(1).Cells(i, 1).Value
End If
End If
End If
Next i

k = 1000
r = 0

Dim Tabl() As Integer
ReDim Tabl(Imiona.Count)
Dim t As Integer

For i = 1 To k


If Sheets(1).Cells(i, 1).Value <> "" Then
a = Sheets(1).Cells(i, 1)
For j = 1 To Imiona.Count
If a = Imiona.Item(j) Then
t = j
Exit For
End If
Next j

Tabl(t) = Tabl(t) + 1
u = Tabl(t)
Sheets(1).Rows(i).Copy
Sheets(Sheets(1).Cells(i, 1).Value).Rows(u).Insert Shift:=xlDown
Sheets(1).Rows(i).Delete

i = i - 1
k = k - 1
End If

Next i


End With

26.01.2005
11:05
smile
[6]

PalooH [ Generaďż˝ ]

Pytanko, jak stworzyć super formułę z WYSZUKAJ.PIONOWO, CZY.BŁ I JEŻELI.
mam baze osób. Arkusz1 kolumna A - imiona i nazwiska, B - Adresy. W arkuszu2 Wpisuję w kolumnie A imię i nazwisko i chcę żeby w kolumnie B wyskoczył aders. Samo wyszukaj pionowo wystarcza, ale jeżeli w bazie nie mam jakiegoś nazwiska to w kolumnie B wyskakuje =N/D. Jako że =N/D mi nie bardzo się podoba :) chcę zamienić go na pustą komórkę (""). Wszystko mi działa, ale zajmuje mi 2 kolumny. Jedna WYSZUKAJ... druga połączone CZY.BŁ z JEŻEL. Jak ktoś ma chwilkę to proszę o podpowiedź.

26.01.2005
11:31
smile
[7]

Rendar [ Senator ]

Swirdy - BIG THX!!! Dodam formatowanie i będzie cool!

26.01.2005
11:48
[8]

Swidrygajłow [ ]

PalloH

=JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(A1;Arkusz1!A1:B2;2));" ";WYSZUKAJ.PIONOWO(A1;Arkusz1!A1:B2;2))

26.01.2005
13:31
smile
[9]

PalooH [ Generaďż˝ ]

Swidrygajłow ~~> dzięki ogromne, jak znajdę chwilkę to przerobie arkusze :)

© 2000-2025 GRY-OnLine S.A.