Jaka formuła

Witam

zakładamy:
Arkusz1, A1:A65536 zawiera liczby, posortowane rosnąco, z których niektóre się powtarzaja kilkakrotnie n.p.: 1,2,2,2,4,4,10,12,14,14,14 ...) W jaki sposób Arkuszu2 wyprowadzić w kulumnie A wartości z kolumny A Arkusza1, lecz aby jedna wartość występowała tylko jeden raz (w jednym wierszu). Jest jeszcze dodatkowe kryterium : wartość w kolumnie np. B. odpowiadająca wartości z kolumny A musi być większa od 0. W przeciwnym razie liczba zostanie pominięta i nie zostanie zwrócona w Arkuszu2.

pozdrawiam

salsa

Odpowiedzi: 6

Mniej więcej chodzi o to co napisał Rycho, lecz będzie jeszcze potrzeba rozbudowania tego kodu. Jeźeli nie dam rady (a na pewno nie dam:), to wyśle arkusz i napiszę o co mi chodzi.

dzieki i pozdrawiam
Salsa
salsa
Dodano
13.01.2006 14:52:53
Mam pomysł, wpisz w exelu jakieś dane i opisz gdzie co ma być i umieść go tutaj na forum. Bo trocheę się nie łapie o co Ci chodzi :D
pulkownik
Dodano
13.01.2006 09:22:10
Witam ponownie.

Przy tak rozwniętym zadaniu, to bez makra chyba a ni rusz? :?

Sub wybierz()
Dim w As Long, w1 As Long 'numery wierszy
Dim ok As Boolean 'flaga czy kopiować
Dim wA As Double, wA1 As Double, sum As Double

Worksheets("Arkusz2").Columns("A:B").ClearContents

w = 1
w1 = 1
wA = Cells(w, 1)
ok = (Cells(w, 2) > 0)
sum = Cells(w, 3)

For w = 2 To Range("A1").End(xlDown).Row + 1
wA1 = Cells(w, 1)
If (wA1 <> wA) Then
If ok Then 'wpis do drugiego arkusza
With Sheets("Arkusz2")
.Cells(w1, 1) = wA
.Cells(w1, 2) = sum
End With
w1 = w1 + 1
End If
' i inicjacja dla nowej wartości w kol A
wA = wA1
ok = (Cells(w, 2) > 0)
sum = Cells(w, 3)
Else
ok = ok Or (Cells(w, 2) > 0)
sum = sum + Cells(w, 3) 'suma dla bieźącego wiersza
End If
Next w
End Sub


Powodzenia w testowaniu.
Rycho
ohcyR
Dodano
13.01.2006 02:21:25
–>Rycho: Fajny pomysł, ale wolałbym jednak z pewnych względów, aby odbywało się to poprzez formułę.

–>Pułkownik: Makro działa, ale pod warunkiem, źe kaźda wartość komórki B odpowiadająca danej wartości A jest >0. Ma tym czasem zadziałać, jeźeli w którejkolwiek B odpowiadajacej A jest liczba >0. Czyli np powinno zwrócić '2', jeźeli: A1=2, A2=2, A3=2, B1=0, B2=1, B3=0.
A jeźeli chciałbym dodatkowo zsumować wartości znajdujące się powiedzmy w kolumnie C, w wierszach z tą samą wartością i wynik umieścić przy odpowiedniej wartości w ark.2.? Duźo by było roboty?
pozdrawiam
salsa
salsa
Dodano
12.01.2006 18:12:21
Chyba takie proste makro wystarczy do tego co chcesz
Sub makro()
Dim i As Double
Dim j As Double
j = 1
For i = 1 To 15 'zamiast 15 wstaw ilość wierszy zawierających dane
If Sheets("Arkusz1").Cells(i, "A") <> Sheets("Arkusz1").Cells(i + 1, "A") And Cells(i, "B") > 0 Then
Sheets("Arkusz2").Cells(j, "A") = Cells(i, "A")
j = j + 1
End If
Next i
End Sub
pulkownik
Dodano
12.01.2006 17:01:28
Witaj.
Proponuję, ze względu na szybkość przy tak duźej ilości danych, fitr zaawansowany, jednak dane muszą mieć w A1 nagłówek i wyfiltrowane dane będą w tym samym arkuszu.
np.
A1 = AAA
w innej komórce (gdziekolwiek w arkuszu) wpisz teź AAA i w komorce pod spodem >0

Zaznacz kolumnę A i z menu dane wybierz filtr / filtr zaawansowany i tam:
–kopiuj w inne miesce
–zakres listy juź masz
–zakres kryteriów – wskaź te komórki z AAA i >0
–kopiuj do: wskaź w tym arkuszu komórkę w wierszu 1 w pustej kolumnie
–zaznacz opcję: tylko unikatowe rekordy
–OK

–wytnij kolumnę z otrzymanymi danymi i wklej w drugim arkuszu.

Jeźeli sobie nagrasz makro podczas wykonywania tych czynności, to w przyszłości takie fitrowanie danych będziesz mógł zrobić automatycznie.

pozdrawiam
Rycho
ohcyR
Dodano
12.01.2006 16:32:52
salsa
Dodano:
12.01.2006 14:30:03
Komentarzy:
6
Strona 1 / 1