Można postąpić tak: Odblokować wszystkie komórki w arkuszu (a przynajmniej te, które mogą podlegać edycji). Włączyć ochronę arkusza. Do kodu arkusza wpisać procedurę obsługi zdarzenia Change: [syntax=text]Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect Target.Locked = True ActiveSheet.Protect End Sub [/syntax] Jeśli arkusz...
[syntax=vb]sub usuniecie() Application.ScreenUpdating = False ow = Cells(Rows.Count, "M").End(xlUp).Row For r = ow To 1 Step -1 If Cells(r, "M") = 1224 Or Cells(r, "M") = 1228 Or Cells(r, "M") = 1232 Then Rows(r).Delete Next Application.ScreenUpdating = True End Sub[/syntax]
usuwanie wierszy z tabeli przy powtarzającej się wartości
troszkę nie kminię pomysłu , daj przykład paru komórek jak powinny wyglądać Przecież autor załączył fotkę Proponuje wpisać w A1 1 i w A2 1 zaznaczyć A1 i A2 złapać z róg i skopiować w dół do A32 A33 wpisać =A1+1 i skopiować w dół do A64 Zaznaczyć komórki od A33 do A64 złapać za prawy dolny róg i przeciągnąć/skopiować w dół aż do ostatniego wiersza...
Powinno działać.
For i = 2 To arkusz.Rows.Count - 1 Na For i = 2 To 200
Nie wiem tylko czy to będzie mieć zastosowanie raz do np 1000 wierszy a raz np 600 czy 500? bo ilość danych będzie zmienna Tak będzie mieć
lub zmień na [syntax=vb]If Cells(i, "B").Text = 1 Then[/syntax]
Cześć, Potrzebuję podpowiedzi z poniższym kodem. W momencie kiedy wybieram kilka pozycji na listboxie i puszczam kod to usuwa mi tylko pierwszą i wyrzuca error jak w załączniku: Witam Zrób tak [syntax=vbnet]Sub DeleteButton_Click() Dim i As Integer With ListBox1 For i = .ListCount - 1 To 0 Step -1 If .Selected(i) Then .RemoveItem i Sheets("Setup").Rows(i...
Argumentem funkcji IsNumber ma byc komorka (Range("B" & i)), "B" & i jest zwykly tekst
Zrób taką formułę, która sprawdzi ci czy w pierwszej kolumnie jest liczba całkowita, jeśli tak to skopiuje dane z kolumn X,Y1 i Y2 do nowego arkusza lub nawet w następne puste kolumny. A dalej to już sobie poradzisz.
Wygląda mi to na jakieś "kombinowanie" i, znając życie, nie będzie to działało tak, jak chcesz - bo zaistnieją jakieś warunki, których teraz nie przewidzisz, ale tak na szybko można próbować takim makrem, jak w załączniku. Cała "sztuka" to dodawanie / usuwanie wierszy od końca, żeby zakres się w pętli nie przesuwał. Usuwanie zakłada, że usuwasz wiersze,...
Piszesz, że dane są kopiowane z faktury do arkusza "Raport zbiorczy" ale z kodu wynika, że operujesz cały czas na jednym arkuszu - odwołujesz się do Range niepoprzedzonego innymi nazwami arkuszy... Najpierw przypisujesz jakieś wartości komórek do zmiennych, a potem te zmienne wypisujesz na inne komórki - nigdzie tu nie widać zmiany arkusza. To jak to...
Nie wiem czy dobrze rozumiem, ale jeżeli w jednej kolumnie są komórki z danymi , na przemian liczby dodatnie i liczby ujemne, to mozna to wykonać tak: - usuwam tylko liczby ujemne 1. zaznaczyć całą kolumne ( z nagłówkiem jeżeli istnieje) 2. wybrać menu Dane/Filtr/ Autofiltr 3. rozwinąć opcje autofiltru i wybrać Niestandardowe 4. w okienku Autofiltr...
Jakoś dziwnie masz to zrobione, ale tak na szybko to podmień na [syntax=vbscript]Cells(j, t).Delete xlShiftUp[/syntax]
Usuń duplikaty ani tabela przestawna tu się nie przyda bo dochodzi warunek że usuń gdy puste ale nie gdy puste w Re_3 Stworzyłem w sumie proste makro (ono tylko tak wygląda) Pierwsza część kodu przepisuje wszystkie linie mające to samo zlecenie. Później następuje sortowanie. Następnie warunek sprawdza czy (w moim przypadku coś1) się powtarza jeżeli...
powtórzym po raz trzeci: zamiast nr. pozycji np. 1 wpisz =wiersz()-4 i przeciagnij w dol Dodano po 2 kropka się wkradła to bylo koniec zdania
Mała przeróbka makr: 912681 Wiersze można dodawać ze ściśle określonego zakresu, który sam sobie ustalasz ("If ilewrs > 10 Then Exit Sub"). Usuwanie wierszy tylko pojedynczo, od ostatniego, aby zachować porządek.
Zamiast y = y + last_row2 wks.Rows(x).Cut wkb.Rows(y) wpisz wks.Rows(x).Cut wkb.Rows( last_row2) last_row2 = last_row2 + 1 Dodano po 53 usuwanie wierszy w drugim arkuszu zbędne
Żaden ze standardowych komponentów zdaje się nie obsługuje takiego zapisu do pliku - musisz go sam oprogramować. Co do samego komponentu - ze standardowych StringGrid powinien Ci wystarczyć. Dodawanie wierszy realizujesz poprzez zwiększenie własności RowsCount. Usuwanie wierszy ze środka musisz oprogramować tak, aby niższe przenosiły się na wyższe,...
Takie coś. .
Hej, Jestem totalnym excelowym laikiem i pisze w zapewne większości prócz mnie banalnej sprawie. Temat klaruje się następująco: 1 plik to baza danych klientów która ma kilkadziesiąt tysięcy pozycji z kolumnami: Nazwa firmy/Kategoria/e-mail 2 plik to wylistowane kategorie na podstawie chciałbym usunąć wierze w pliku nr. 1 - po prostu zbędne pozycje Podsumowując:...
Moja sugestia jest jednak taka, żeby te pliki wrzucić do tabeli w Accessie i tam je analizować. To a propos pytania "co byście zmienili". Jeśli już się uprzeć przy pliku, to usuwanie większej ilości wierszy pojedynczo poleceniem .Delete jest baaaardzo wolne, zagnieżdżona pętla też nie pomaga. 4 pomysły na przyspieszenie: 1. Kopiować znajdowane wiersze...
załącz plik
Do makra można przypisać skrót klawiaturowy, ale nie może to być ani "'" ani F9 tylko konstrukcja typu Ctrl+Shift+A Można też uruchamiać makro za pomocą przycisku lub przypisać je do kliknięcia w obraz lub kształt.
Może tak: Sub del() Dim i As Integer For i = 100 To 3 Step -1 'ile wierszy będzie sprawdzanych If Range("B" & i).Value = Range("B2") Then Rows(i).Delete End If Next i End Sub
Podaj jakiś przykładowy plik dla lepszego zobrazowania problemu.
Zrobiłbym to tak: Zastosowałbym pętlę Do While, gdzie warunkiem będzie niepusta komórka w kolumnie D arkusza "Raport" w pliku "test". Obszukujemy kolumnę C w pliku "alredy..." Metoda Find wygeneruje błąd jeśli nie znajdzie szukanej frazy. Czyli jeśli błędu nie ma - pracownik jest. Jeśli błąd - pracownik zwolniony, można usunąć wiersz wg schematu (oczywiście...
Witam, ja mam nieco inny problem, mianowicie w obszarze arkusza o nazwie "LISTA" w ostatniej kolumnie "AO" wpisuję "X" jako pozycja zrealizowana. Chciałbym aby przy ponownym odświeżeniu pliku, bądź też otwarciu, wszystkie pozycje odznaczone w tej kolumnie "X" em były usunięte bez problemu dla funkcjonowania całej tabeli, która jest źródłem dla tabeli...
Sub UsunWiersze() Dim i As Long Dim zakres As Range Dim zakres2 As Range Dim nzakres As Range Application.ScreenUpdating = False For i = 450 To 1 Step -1 If Cells(i, 12).Value = "LICZBA AUT:" Then If Cells(i, 14).Value = 0 Then Set zakres = Range(Cells(i, 1), Cells(i + 81, 1)) zakres.Rows.EntireRow.Delete End If End If Next For i = 450 To 1 Step -1...
Poczekaj trochę , spróbuje napisać program który będzie wywalał np. co drugą linię z pliku tekstowego . Dodano po 1 A oto i program napisany przezemnie który tworzy plik tekstowy z co n'tym wierszem poprzedniego ,obsługa : w katalogu z programem umieszczasz plik o nazwie plik1 ( z rozszerzeniem .txt ,czyli zwykły plik tekstowy ) ,uruchamiasz program...
do { $tab="zmienna".$row; $tab1="id".$row; $myrow = pg_fetch_row ($result,$row); printf ("<tr> <td height=30 ><INPUT TYPE=hidden name=$tab1 Value=%s></td> <td height=30 bgcolor=#f3f4b6>%s</td> <td height=30 bgcolor=#f3f4b6>%s</td> <td height=30 bgcolor=#f3f4b6>%s</td> <td height=30 bgcolor=#f3f4b6>%s</td>...
Witam, napisałem taki kod vba na usuwanie duplikatów, ale nie działa mi poprawnie... Jak wpiszę sam jakieś dane, to usuwa mi duplikujące się wartości...ale jak wkleje dane, to już nie. Mój kod to [syntax=vb]Sub usun_duplikaty() ' usuwanie duplikatów For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 If Cells(i, "A").Value = Cells(i - 1, "A").Value...
Jesli dane jest w kolumnie 1, wtedy [syntax=vb]For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If (r Mod 3) <> 0 Then Rows(r).Delete Next [/syntax]
Fakt. I przed Rows też. To dlatego, że dodałem tego with'a już po napisaniu kodu i wtedy ktoś mnie zajął czymś innym, a potem musiałem już lecieć i tak zostało. Dlatego nie lubię pisać przykładów, zawsze coś/ktoś przeszkadza.
Witaj 'Next cell ' przed 'If zmienna = False Then ' Dodano po 2 a jeszcze For Each cell In rng.rows(i).Cells
Witaj [syntax=vb]Sub usuwanie_pustych_wierszy() For Each sh In ThisWorkbook.Sheets For i = sh.Cells(65536, "A").End(xlUp).Row To 2 Step -1 If sh.Cells(i, "B").Value = "" Then sh.Rows(i).Delete shift:=xlUp End If Next Next End Sub[/syntax]
Ano nie działa, bo pusta komórka jest traktowana, jako zero.
Delete" na klawiaturze spowodowałoby usunięcie całego wiersza "3". To ma tylko usuwać pojedynczą komórkę? no chyba że o to chodzi (1 to kolumna A) [syntax=vbscript]Sub usun() With ActiveCell If .Column = 1 Then .EntireRow.Delete End With End Sub[/syntax]
Ma ktoś jakiś pomysł jak to naprawić? Przeanalizuj co się dzieje w pętli jak usuniesz "trefny" wiersz - numeracja przeskoczy na następny "wiersz" i dlatego nie będzie ten wiersz analizowany w ogóle :cry: Najprostsze rozwiązanie to "puścić" pętle od dołu :D np [syntax=vbscript]For x=Ostwiersz To 2 Step -1 …. Next x[/syntax]
W każdy przebiegu pętli zanim zaczniesz zaznaczać wiersze. Inaczej skąd program ma wiedzieć, że chcesz zaznaczać w innym arkuszu?
Jedno z wyjść [syntax=vbscript]=ADR.POŚR("Arkusz1!A1")...
Wyłącz odświeżanie ekranu przed pętlą (Application.Screenupdating=false) a za pętlą włącz ponownie (=true)
Skoro raport ma 300000 wierszy, to zmienna i musi być zadeklarowana jako long. W którym miejscu Twoje makro się zatrzymuje? A tak w ogóle to zamiast mozolnego porównywania każdej komórki z elementami tablicy przy pomocy pętli to poszedłbym w sprawdzenie przy pomocy odpowiednika arkuszowej funkcji PODAJ.POZYCJĘ czy wartość danej komórki jest w tablicy....
Dołóż jeszcze jedną pętlę [syntax=vb]Last = Cells(Rows.Count, "A").End(xlUp).Row With Arkusz2 last2 = .Cells(Rows.Count, "A").End(xlUp).Row For i = Last To 1 Step -1 For j = 1 To last2 wyraz = .Cells(j, "A") If Cells(i, "F").Value Like wyraz Then Rows(i).EntireRow.Delete Exit For 'j End If Next j Next i End With [/syntax]
Dołącz przykladowy plik
Witaj Łatwiej zrobić nowy niż szukać błędów: Dodano po 3 Specjalnie w tym przykładzie może być łatwiej [syntax=vb] Sub Usun() Dim r&: r = 2 While Cells(r, 1) <> Empty If Cells(r, 1) = "X" Then Cells(r, 1).Delete Shift:=xlToLeft End If If Cells(r, 2) = "Linia" And Val(Left(Cells(r, 3), 3)) >= 1 Then r = r + 1 Else Rows(r).EntireRow.Delete...
Rzeczywiście - trzeba od dołu - Mój błąd :) Tylko w tym powyższym kodzie szuka po kolumnie "A" a powinien po "P", czyli cells(x,16) :)
No tak, bo funkcja: każdego wiersza? Jeżeli tak, to zmień kolumnę z "A" np. na "B" lub "C"...
Moje skrypty są troche słabe, coś tam znalazłem w necie, troche poprzerabiałem i nawet działa, nie działa natomiast usuwanie wiersza jeżeli w kolumnie A mam coś takiego: "05-lut-2016 17:23 Start Template Page 3" z tego wszystkiego zawsze w zawartości stałe są Start, Template i Page, reszta oczywiście zmienia się według daty i numeru strony, sam wiersz...
makro usuwanie wierszy excel usuwanie wierszy usuwanie pustych wierszy
instalacja elektryczna mitsubishi diesel rozruch zawór filtrze paliwa
czyszczenie ekspresu czyszczenie ekspresu
FreeRTOS STM32: co wywołuje przerwanie xPortPendSVHandler, kontekst, PendSV, scheduler ZTR-120 – wskaźnik prądu ładowania, wymiana amperomierza 0-10A DC