vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 11 maja 2025 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Suma iloczynów w VBA


otwartyotwarty rozpoczął: pawel30 postów: 7



napisał: pawel30
postów: 40


umieszczony:
4 czerwca 2007
07:22

edytowany:
4 czerwca 2007
08:13

  
Witam wszystkich

Próbowałem przez weekend sam poradzić sobie z problemem, ale niestety to zadanie przerosło mnie.
Każde makro, które stworzyłem dawało błąd #Arg lub #Nazwa. Nie poradzę sobie z nim sam. Jak znajdziecie chwilkę czasu to proszę pomóżcie mi. Bardzo mi na tym zależy.

Pozdrawiam

Paweł
napisał: pawel30
postów: 40


umieszczony:
1 czerwca 2007
06:58

edytowany:
1 czerwca 2007
07:03

  
Witam wszystkich.

Zwracam się ponownie o pomoc w stworzeniu makropolecenia związanego z funkcją suma.iloczynów.

Sprawa wygląda następująco:
1. mam 12 arkuszy reprezentujących miesiące, które nazwałem mc01, mc02,...,mc12.
2. w każdym arkuszu mam 3 kolumny z danymi: kol.A data ( w formacie 2007-06-01 ),
kol.B kod asortymentu ( 01, 02, 03 itd.), kol.C wartość.
3. poszczególnym kolumnom przy pomocy funkcji przesunięcie nadałem nazwy:
np. dla arkusza mc05 kolumnę z datą nazwałem data05, kolumnę z kodem kod05, kolumnę
z wartością wartosc05; analogiczne nazwy utworzyłem dla pozostałych arkuszy.
4. za pomocą userforma wybieram datę, która jest wpisywana do arkusza Plan do komórki
D19.

Jeżeli użytkownik wybierze np. datę 2007-03-15 to dla sortymentu o kodzie 01 formuła wyglądałaby następująco:
=SUMA.ILOCZYNÓW((kod03="01")*(data03<=DATA(2007;3;15))*wartosc03)
Wartość tą wpisuję do komórki F9 arkusza Raport.

Jeżeli użytkownik wybierze np. datę 2007-05-10 to dla sortymentu o kodzie 01 formuła wyglądałaby następująco:
=SUMA.ILOCZYNÓW((kod05="01")*(data05<=DATA(2007;5;10))*wartosc05)
Wartość tą wpisuję do komórki F9 arkusza Raport.

Niestety nie potrafię zamienić powyższych formuł na język VBA. Wszystkie próby wymyślenia czegoś sensownego spełzły na niczym. Ogromną trudność sprawia mi zwłaszcza podmiana w procedurze zmiennych kod, data i wartość w zależności od wybranej daty.

Bardzo proszę o pomoc.

Pozdrawiam

Paweł
napisał: pawel30
postów: 40


umieszczony:
30 maja 2007
07:09

  
Dziękuję za wyjaśnienia.

Pozdrawiam

Paweł
napisał: Rycho
postów: 291


umieszczony:
29 maja 2007
16:08

  
Hej.
4 cudzysłowy to jeden cudzysłów
Aby wprowadzić cudzysłów do tekstu, trzeba użyć pary tych znaków.
Jeśli zmienna ma zawierać cudzysłów, to można zrobić tak:
a = """"
lub przy pomocy funkcji Chr.

Evaluate znajdziesz w pomocy VBA.
Ogólnie rozumiem to tak: czasmi wykonuje obliczenia podobnie jak formuły ale też tworzy obiekty. Inaczej, jeśli wyrażenie daje się obliczyć lub można utworzyć obiekt, to jest to robione.

Rycho
napisał: pawel30
postów: 40


umieszczony:
29 maja 2007
07:23

edytowany:
29 maja 2007
07:24

  
Dziękuję za kod. Działa doskonale.

Chciałbym się jeszcze zapytać co oznaczają cztery cudzysłowy i na czym polega działanie funkcji evaluate, z którą spotykam się po raz pierwszy.

Pozdrawiam i jeszcze raz dziękuję.

Paweł
napisał: Rycho
postów: 291


umieszczony:
28 maja 2007
23:15

  
Witam.
1. wiersz: Set a = Sheets("AR").Range("A" & "i") jest poza pętlą
2. Funkja SumProduct jako parametrów potrzebuje tablic a wyrażenie
(rngIndeks.Value = a.Value) czy nawet (rngIndeks = a) tablicą nie jest.

Nie potrafię w prosty i szybki sposób (bez iteracji) utworzyć takiej tablicy.

Jednak w Twoim przypadku funkcję suma.iloczynow można wykorzystać tak:

Sub sumailoczynow()
  Dim a As Variant
  Dim i As Integer
  Dim formuła As String

  '=SUMA.ILOCZYNÓW((SP!$A$3:$A$52=AR!A5)*1;SP!$F$3:$F$52)
  '=SUMPRODUCT((SP!$A$3:$A$52=AR!A5)*1,SP!$F$3:$F$52)

  For i = 5 To 17
    a = """" & Sheets("AR").Range("A" & i) & """"
    formuła = "=SUMPRODUCT((SP!$A$3:$A$52=" & a & ")*1,SP!$F$3:$F$52)"
    Sheets("AR").Cells(i, 4) = Evaluate(formuła)
  Next i

End Sub



pzdr
Rycho
napisał: pawel30
postów: 40


umieszczony:
28 maja 2007
08:25

edytowany:
28 maja 2007
08:53

  
Witam wszystkich.

Mam następujący problem. W arkuszu sprzedaż SP w kolumnie A mam indeksy wyrobów a w kolumnie F ilość sprzedaną. W arkuszu do analizy rentowności AR komórki od D5 do D17 chciałem wypełnić wartościami przy użyciu funkcji suma iloczynów.

Napisałem następujący kod, który nie działa.

Sub sumailoczynow()

Dim rngIndeks As Range
Dim rngIlosc As Range
Dim a As Range
Dim i As Integer

Set rngIndeks = Sheets("SP").Range("A3:A52")
Set rngIlosc = Sheets("SP").Range("F3:F52")
Set a = Sheets("AR").Range("A" & "i")

For i = 5 To 17
Cells(i, 4).Value = WorksheetFunction.SumProduct((rngIndeks.Value = a.Value), rngIlosc.Value)
Next i

End Sub



Proszę o pomoc.

Pozdrawiam

Paweł


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z