viglujmj
Advertisement
PARTNER SERWISU
xgkjxcwb

Makro EXCEL - prośba o pomoc

anty_teresa
PREMIUM
523
Grupa: Zespół StockWatch.pl
Dołączył: 2008-10-24
Wpisów: 11 191
Wysłane: 10 lipca 2011 15:37:30
Witajcie,
Niestety kompletnie nie znam VBA, a potrzebuję mieć makro, które działałoby mniej więcej tak:

Zakres danych Wiersze 1-500 Kolumny A
Format danych tekst.

Jeśli w komórce i występuje wyrażenie " H " oraz w komórce wyżej czyli i-1 początek komórki zgadza się z tym co było do momentu wystąpienia wyrażenia " H ", to usuń wiersz i-1.


np:
Jeśli:

Komórka A10 ma zawartość "apator 113 38"
Komórka A11 ma zawartość "apator H 345"

To wiersz 10 powinien być usunięty z arkusza.



Znalazłby ktoś chwilę, aby napisać parę linii kodu?

Z góry dziękuję za pomoc.
Edytowany: 10 lipca 2011 16:09

Zielarz
0
Dołączył: 2009-05-16
Wpisów: 457
Wysłane: 11 lipca 2011 08:24:15
Jezeli nie musialo by byc w VBA a moglo by byc w tcl'u to moglbym pomoc (i operowanie np na wierszach pliku tekstowego a nie celach). Poza tym czy aby na pewno podany przyklad zgadza sie ze specyfikacja ?
Oby nigdy więcej drzewa nie przysłoniły mi lasu ...
It’s just money. It’s made up.

federer
0
Dołączył: 2011-01-07
Wpisów: 263
Wysłane: 11 lipca 2011 10:40:26
Sub Makro9()
'
' Makro9 Makro
'
' Klawisz skrótu: Ctrl+Shift+Q
'
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim val As String
Dim slowo As Variant
Dim slowo2 As Variant
Dim Rng_1 As Range

Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long

With Application
.ScreenUpdating = True
End With

Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

For j = 2 To 500
k = j - 1

Set Rng = Sheets("Arkusz1").Range("B" & j & ":B" & j)
Set Rng_1 = Sheets("Arkusz1").Range("B" & j - 1 & ":B" & j - 1)

TheString = Rng.Value
TheString_1 = Rng_1.Value

Position = InStr(TheString, " H ")

If Position <> 0 Then

slowo = Left(TheString, Position + 1)
slowo2 = Left(TheString, Position)

If Left(TheString, Position) = Left(TheString_1, Position) Then

Sheets("Arkusz1").Range("A" & j - 1 & ":A" & j - 1).Value = 1

End If

End If

Next j

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

With ActiveSheet

.Select

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

.DisplayPageBreaks = False

Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row

For Lrow = Lastrow To Firstrow Step -1

With .Cells(Lrow, "A")

If Not IsError(.Value) Then

If .Value = 1 Then .EntireRow.Delete

End If

End With

Next Lrow

End With

ActiveWindow.View = ViewMode
With Application
.Calculation = CalcMode
End With

Columns("A:A").Select
Selection.Delete

End Sub




Powinno dzialac. Pewnie daloby rade prosciej ale tym razem tak wyszlo...

ALT F11 --> Insert Module --> wkleić do modułu
skrót SHIFT+CTR+Q albo ALT F8 i wybrac makro9 z listy
nie ma tego złego, co by na dobre nie wyszło
jeśli lubisz miód, nie powinieneś bać się pszczół


anty_teresa
PREMIUM
523
Grupa: Zespół StockWatch.pl
Dołączył: 2008-10-24
Wpisów: 11 191
Wysłane: 11 lipca 2011 20:00:20
Dzięki Federer,
Niestety nie działa, tzn widać, że się uruchamia makro, ale nic poza dodaniem pustego arkusza z nazwą makro1 się nie dzieje.
I tak dzięki, ugryzę to z innej strony, czyli tak jak Proponował Zielarz, bo w ten sposób chyba sam dan radę :)

federer
0
Dołączył: 2011-01-07
Wpisów: 263
Wysłane: 12 lipca 2011 09:25:30
hmm... kod jest dosc prosty i moze nie uwzgledniac na przyklad tego, ze mozesz miec dane w innym arkuszu niz Arkusz1, moze sie on inaczej nazywac, albo po angielsku, lub tez na przyklad posiadasz nowa wersje excela zapisana bez obslugi makr.

Nie powinno dodawac zadnego arkusza jesli w panelu Microsoft Visual Basic for Application (w lewym panelu) zrobisz Insert Module i w nowym oknie (po prawej) wkleisz kod, po czym dla danych w Arkuszu1 odpalisz makro9.

Tak czy inaczej sposobow jest na pewno wiecej, wiec wybierz taki ktory Ci najbardziej pasuje ;)
nie ma tego złego, co by na dobre nie wyszło
jeśli lubisz miód, nie powinieneś bać się pszczół

Użytkownicy przeglądający ten wątek Gość



Na silniku Yet Another Forum.net wer. 1.9.1.8 (NET v2.0) - 2008-03-29
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.
Czas generowania strony: 0,171 sek.

paastuho
uudcajkf
Prezentacja inwestorska Grupy Klepsydra - 11 września 2025 r.
Portfel StockWatch
Data startu Różnica Wartość
Portfel 4 fazy rynku
01-01-2017 +79 490,71 zł +397,45% 99 490,71 zł
Portfel Dywidendowy
03-04-2020 +60 637,62 zł 254,44% 125 556,00 zł
Portfel ETF
01-12-2023 +4 212,35 zł 20,98% 24 333,09 zł
mbcmkgjw
entjqcoz
cookie-monstah

Serwis wykorzystuje ciasteczka w celu ułatwienia korzystania i realizacji niektórych funkcjonalności takich jak automatyczne logowanie powracającego użytkownika czy odbieranie statystycznych o oglądalności. Użytkownik może wyłączyć w swojej przeglądarce internetowej opcję przyjmowania ciasteczek, lub dostosować ich ustawienia.

Dostosuj   Ukryj komunikat