Nie wiem dlaczego poniższe makro nie chce się uruchomić, może ktoś mi powie
dlaczego wyrzuca błąd "Object variable or with block variable not set ?
Dim i As Long
Dim j As Long
Dim komorka As Range
For i = 1 To Selection.Rows.Count
For j = 1 To Selection.Columns.Count
komorka(i, j).Value = Selection(i, j).Value
If (Len(komorka)) > 0 Then
Arkusz1.Cells(i, j + 3).Value = komorka(i, j).Value
End If
Next j
Next i
End Sub
Makro ma za zadanie kopiować z 4 pierwszych kolumn zawartość komórki do 5 i
kolejnych jeśli wszyskie 4 są wypełnione (a zwykle tylko 2 z 4 komórek będą
zawierały jakieś dane ale nie wiadomo w której kolumnie) ? Oczywiście te
kolumny są zaznaczone, jakieś sugestie ?
Pozrawiam Pawel
> Makro ma za zadanie kopiować z 4 pierwszych kolumn zawartość komórki do 5 i
> kolejnych jeśli wszyskie 4 są wypełnione (a zwykle tylko 2 z 4 komórek będą
> zawierały jakieś dane ale nie wiadomo w której kolumnie) ? Oczywiście te
> kolumny są zaznaczone, jakieś sugestie ?
sprawdź poniższe makro, działa bez zaznaczania kolumn, według tego co
napisałeś, jesli komórki w dowolny wierszu od A do D sa wypełnione to
kopiuje je do tego samego wiersza do kolumn E H
Sub kopiowanie()
Dim i As Long
Z = ActiveSheet.UsedRange.Rows.Count
For i = 1 To Z
If Application.WorksheetFunction.CountA(Rows(i)) = 4 Then
Range("A" & i & ":D" & i).Copy Range("E" & i)
End If
Next i
End Sub
--
Pozdr.
Cynio
> Makro ma za zadanie kopiować z 4 pierwszych kolumn zawartość komórki do 5
> i
> kolejnych jeśli wszyskie 4 są wypełnione (a zwykle tylko 2 z 4 komórek
> będą
> zawierały jakieś dane ale nie wiadomo w której kolumnie) ? Oczywiście te
> kolumny są zaznaczone, jakieś sugestie ?
sprawdź poniższe makro [...]
Pozdr.
Cynio
----------------------------------
Dzięki za odpowiedź makro działa oczywiście jednak nie tak jak potrzeba,
gdyż
jak napisałem dane są na pewno w 1 (pierwszej) kolumnie a nastęnie tylko w 2
(drugiej) lub np. tylko
w 3(trzeciej) itd. Te makro działa tylko dla wierszy które mają wypełniony
wszystkie 4
kolumny aczkolwiek widzę, że źle sformułowałem problem chociaż w nawiasie
podałem, że dane mogą być tylko w niektórych z komórek danego wiersza. Żeby
zilustrować problem przedstawie poniżej 2 tabelki:
tabelka surowa:
okaz | waga1 | waga2 | waga3
ww | 1.0 | |
| | |
ss | | | 4.45
sk | | 5.66 |
tabelka wynikowa:
okaz | waga
ww | 1.0
ss | 4.45
sk | 5.66
Przepraszam za zamieszanie i zgóry dzięki za koleją podpowiedź.
Pozdrawiam Paweł
Sub kopiowanie()
Dim i As Long
Z = ActiveSheet.UsedRange.Rows.Count
k = Range("E65536").End(xlUp).Row + 1
Range("E1") = "okaz"
Range("f1") = "waga"
For i = 2 To Z
For j = 1 To 4
If Cells(i, 1) <> "" And j = 1 Then Cells(k, 5) = Cells(i, 1)
If Cells(i, j) <> "" And j > 1 Then Cells(k, 6) = Cells(i, j)
Next j
Next j
Next i
End Sub
--
Pozdr.
Cynio
Za bardzo nie mogę sprawdzić czy to makro działa właściwie, ponieważ
wszystkie wiersze z "tabelki" źródłowej kopiują się do jednego wiersza
"tabelki" docelowej w rezultacie mam tylko w niej wypisane ostatnie badanie.
Pozdrawiam Paweł
Uzupełniłem podesłane przez Pana makro i ostatecznie moją tabelkę tworzy
poniższe makro:
Sub kopiowanie()
Dim i As Long
Dim r As Long
Z = ActiveSheet.UsedRange.Rows.Count
k = Range("E65536").End(xlUp).Row + 1
Range("E1") = "okaz"
Range("f1") = "waga"
r = 2
For i = 1 To Z
For j = 1 To 4
If Cells(i, 1) <> "" And j = 1 Then Cells(r, 5) = Cells(i, 1)
If Cells(i, j) <> "" And j > 1 Then Cells(r, 6) = Cells(i, j)
If Cells(i, j) <> "" And j > 1 Then r = r + 1
Next j
Next i
End Sub
Jeszcze raz bardzo dziękuję za pomoc, pozdrawiam Paweł
> Za bardzo nie mogę sprawdzić czy to makro działa właściwie, ponieważ
> wszystkie wiersze z "tabelki" źródłowej kopiują się do jednego wiersza
> "tabelki" docelowej w rezultacie mam tylko w niej wypisane ostatnie badanie.
oj sorrki
pojawił się błąd w moim makrze, poniżej już powinno być ok