Mam w kolumie 2000 komórek z danymi i muszę zaznaczyć co trzecią komórkę aby dane przenieść do schowka. Czy istnieje możliwość zrobić tą operację automatycznie, o ile tak to jak. Ręcznie chyba bym się załamał.
To się chyba załamiesz…
możesz wykorzystać kombinację Shift+F8 żeby nie trzymać Ctrl cały czas.
http://office.microsoft.com/pl-pl/excel … 01045.aspx
można to zrobić makrem ale ktoś inny musi ci pomóc
Witam,
Proponuje na przykład taką procedurę:
Sub ZaznaczCo3()
Dim rngZakres As Range
Dim intLicznik As Integer
Dim strKomorka As String
For intLicznik = 1 To 2000 Step 3
strKomorka = “B” & intLicznik
If rngZakres Is Nothing Then
Set rngZakres = Range(strKomorka)
Else
Set rngZakres = Union(rngZakres, Range(strKomorka))
End If
Next intLicznik
rngZakres.Select
End Sub
Jak można zauważyć zrobiłem to dla kolumny “B” aktywnego arkusza. Przekształć to wedle potrzeb.
Pozdrawiam
bshbc
Eee… nic to nie daje. Zrobiłem ręcznie 200 zaznaczeń - 2 razy mi się zerwało - dostaje oczopląsu chyba się wycofam tej zabawy.
– Dodane 13.03.2010 (So) 22:12 –
ale co ja mam z tym “skryptem” zrobić??
jak nie chcesz makrem to chociaż zablokuj sobie zaznaczanie Shift+F8
-
Jeśli nie masz aktywnej karty “Deweloper” to ją uaktywnij: “Opcje programu Excel” -> Grupa “Popularne” -> Zaznacz “Pokaż kartę Deweloper na wstążce”
-
Na karcie “Deweloper” wybierz polecenie “Visual Basic”
-
W uruchomionym oknie edytora VBA wybierz “Insert” -> “Module”
-
W otwartym oknie kodu modułu wklej podany przeze mnie wcześniej kod (zaczyna się od Sub a kończy na End Sub).
-
Wybierz “Debug” -> “Compile VBA Project” (jeśli wszystko zrobiłeś dokładnie to nie zostanie wyświetlony żaden błąd)
-
Zamknij okno edytora VBA
-
Na karcie “Deweloper” wybierz polecenie “Makra”
-
Wybierz makro “ZaznaczCo3” i zaznacz kontrolkę “Uruchom”
Czy o to chodziło?
Pamiętaj, że aby zapisać makro na przyszłość musisz używać formatu z obsługą makr *.xlsm
Pozdrawiam
bshbc
Dziękuję bardzo za pomoc. Udało mi się , ale pomylilem sie z informacją i podałem e to jest 2000 komorek, a to okazało się ze tych komórek jest 200000 i makro zaznaczyło mi 2000. Edytowałem w makrze na 200000 i wyskakuje mi błąd na żółto. Czy tyle komórek to nie przyjmuje, czy coś źle zrobiłem.
Zamień sobie linię:
Dim intLicznik As Integer
na:
Dim intLicznik As Long
lub żeby było bardziej elegancko:
Dim lngLicznik As Long
(w tym przypadku wszystkie wystąpienia intLicznik zmień również na lngLicznik)
Wykonanie tego makra może dość długo potrwać o ile sam Excel się nie powiesi z wrażenia (próbuj wtedy w kilku częściach odpowiednio modyfikując zmienną lngLicznik). Tak na marginesie to najlepsze byłoby makro które przeprowadzi całą operację kopiowania czy co tam jeszcze chcesz z tym robić bez zaznaczania. Przy tej ilości komórek do przerobienia powinno się dobrać odpowiednią metodę bo inaczej czarno to widzę.
Zawsze pozostaje ręczne kopiowanie jako lekcje cierpliwości
Pozdrawiam
bshbc
Na razie bardzo dziękuję. Będę sie bawił. Mam całą noc przed sobą, zobaczymy co z tego wyjdzie.
Jeszcze taką procedurę przygotowałem. Podczas uruchomienia podaje się liczbę komórek do zaznaczenia w kolumnie i odstęp pomiędzy komórkami. Zaznaczane są komórki w kolumnie począwszy od aktualnie aktywnej przed wywołaniem makra. Może się przyda w testach?
Na pasku statusu Excel-a prezentowany jest postęp działania procedury, co zdecydowanie uspokoi użytkownika przy dużej liczbie komórek do zaznaczenia. Nie polecam jednak z tym przesadzać bo czas wykonania wzrasta wykładniczo do całkowitej liczby zaznaczanych komórek.
Sub ZaznaczWKolumnie()
Dim rngZakres As Range
Dim rngAktywna As Range
Dim lngLicznik As Long
Dim lngKomorki As Long
Dim intOdstep As Integer
Dim dteStart As Date
lngKomorki = Val(InputBox(“Podaj liczbę komórek do zaznaczenia:”, “Wprowadzanie parametrów”))
intOdstep = Val(InputBox(“Podaj odstęp zaznaczonych komórek:”, “Wprowadzanie parametrów”))
If Not (lngKomorki > 1 And intOdstep > 0) Then Exit Sub
Set rngAktywna = ActiveCell.Cells(1, 1)
Set rngZakres = rngAktywna
dteStart = Time
For lngLicznik = 1 To lngKomorki - 1
Set rngZakres = Union(rngZakres, rngAktywna.Cells(lngLicznik * intOdstep + 1, 1))
If lngLicznik Mod WorksheetFunction.RoundUp(lngKomorki / 100, 0) = 0 Then
Application.StatusBar = "Postęp: " & 100 * lngLicznik / lngKomorki & _
"% Przetworzone komórki: " & lngLicznik & _
" Czas trwania: (" & CDate(Time - dteStart) & “)”
DoEvents
End If
Next lngLicznik
rngZakres.Select
Application.StatusBar = “”
End Sub