Forum > Software > VBA dla opornych

Strona 1 z 1 1
skocz

alii

  • alii
  • wiadomość Użytkownik

  • 2413 wypowiedzi

Wysłane 2017-03-06 22:44

Cześć wszystkim przyszło mi zmierzyć się na studiach z czymś takim jak Visual Basic i utknąłem podczas robienia zadania, zdaje sobie sprawę, że to jest na pewno bardzo proste ale totalnie nie wiem jak zacząć, zadanie do zrobienia jest następujące:
Zdefiniuj nową funkcję obliczającą średnią ważoną trzech liczb. Funkcja taka wymaga podania aż sześciu wartości, dlatego użyjemy zmiennej tablicowej typu Range.
a. Zadeklaruj funkcję zależącą od jednego argumentu typu Range i o wartościach typu double
b. Ustal, że pierwsza kolumna to liczby a druga to wagi (należy tę informację umieścić później w opisie funkcji).
c. Wykorzystaj wzór analogiczny do średniej ważonej 2 liczb (do różnych wartości odnosimy się zmieniając odpowiednio numery w Cells.
d. Dodaj opis funkcji
e. Przejdź do Excela i wypełnij stosowny blok komórek liczbami i wagami.
f. Sprawdź działanie funkcji.

kompletnie nie wiem co z tym zrobić ponieważ nie mam żadnych innych informacji podanych w opisie do zadania.
Z góry dzięki za pomoc i naprowadzenie co z tym zrobić, zapewne to jest jakieś 10 min roboty albo i mniej...

Gigabyte B460M; i7 10700; HyperX 32GB 2133Mhz; GTX 1060 GAMING X 6G; Plextor PX-128M5Pro; ADATA SU900; SanDisk SD6PP4M; Samsung 500GB 970 EVO Plus; SeaSonic 650PX; Noctua NH-U12P; Jonsbo RM3; TP-Link Archer TX3000E; Roccat Kone PRO + SPC Gear M.Pad Endorphy + HP Wireless K5510 WHITE SLIM; Sennheiser HD 555|Logitech G51 |LCD Eizo S2031W-BK|

kowgli

  • kowgli
  • wiadomość Użytkownik

  • 4367 wypowiedzi

Wysłane 2017-03-07 07:36 , Edytowane 2017-03-07 07:37

Nie za bardzo rozumiem co to znaczy, że nie masz informacji? Wydaje się, że wszystko jest czarno na białym. Chodzi o napisanie makra do Excela, które ma liczyć średnią ważoną, czyli:
SUM {i: 1->N} Ai*Bi / N

Dla ścisłości Visual Basic for Applications, czyli tzw. VBA to coś innego niż Visual Basic (technologia z lat 90' pozwalająca tworzyć aplikację x86 za pomocą jednego z pierwszych środowisk RAD) i Visual Basic .NET (czyli wersję VB na CLR .NET).

alii

  • alii
  • wiadomość Użytkownik

  • 2413 wypowiedzi

Wysłane 2017-03-07 14:15

@kowgli  no widzisz mówiłem, że dla opornych bo ja nawet nie wiedziałem że jest różnica między VBA a VB, ok czyli mnie chodzi o VB, a co do tego że nie mam informacji to chodzi mi o to, że oprócz podanej treści zadania nie mam żadnych wskazówek z jakich komend? mam skorzystać żeby wykonać je poprawie... innymi słowy to jest tak jak by mi ktoś kazał odczytać sanskryt kiedy ja nie znam liter polskiego alfabetu.

Gigabyte B460M; i7 10700; HyperX 32GB 2133Mhz; GTX 1060 GAMING X 6G; Plextor PX-128M5Pro; ADATA SU900; SanDisk SD6PP4M; Samsung 500GB 970 EVO Plus; SeaSonic 650PX; Noctua NH-U12P; Jonsbo RM3; TP-Link Archer TX3000E; Roccat Kone PRO + SPC Gear M.Pad Endorphy + HP Wireless K5510 WHITE SLIM; Sennheiser HD 555|Logitech G51 |LCD Eizo S2031W-BK|

adir

  • adir
  • wiadomość Użytkownik

  • 968 wypowiedzi

Wysłane 2017-03-07 14:55 , Edytowane 2017-03-07 15:47

Może to być pomocne :)
[LINK]


i Więcej o funkcjach etc. http://www.123office.pl/2013/07/kurs-vba-cz-6-funkcje-i-procedury.html

A tutaj masz o funkcji Range. https://www.youtube.com/watch?v=1eAW1x1h9KA

To Ty chodzisz na wykłady czy ćwiczenia i tam powinni Ciebie nauczyć podstaw, co to są marka, VBA czy jak się je tworzy.

i5-13500, Gigabyte B760 GAMING X, MSI RTX 4060 GAMING X, Kingston FURY Renegade Black DDR4 32GB 3600MHz CL16, Kingston KC3000 2TB M.2, Spartan 5 max

kowgli

  • kowgli
  • wiadomość Użytkownik

  • 4367 wypowiedzi

Wysłane 2017-03-07 15:32

@ alii

Chodziło Ci o VBA :)

alii

  • alii
  • wiadomość Użytkownik

  • 2413 wypowiedzi

Wysłane 2017-03-07 18:04 , Edytowane 2017-03-07 18:07

@ kowgli dobra VBA ;P

@adir  z tego akurat mam tylko ćwiczenia ale gość się rozchorował wysłał nam na platformie do zrobienia zadania dał 2 tygodnie na oddanie i po temacie.

Gigabyte B460M; i7 10700; HyperX 32GB 2133Mhz; GTX 1060 GAMING X 6G; Plextor PX-128M5Pro; ADATA SU900; SanDisk SD6PP4M; Samsung 500GB 970 EVO Plus; SeaSonic 650PX; Noctua NH-U12P; Jonsbo RM3; TP-Link Archer TX3000E; Roccat Kone PRO + SPC Gear M.Pad Endorphy + HP Wireless K5510 WHITE SLIM; Sennheiser HD 555|Logitech G51 |LCD Eizo S2031W-BK|

Pioter

  • Pioter
  • wiadomość Użytkownik

  • 867 wypowiedzi

Wysłane 2017-03-08 22:09

@alii
bardzo prymitywny kod poniżej, niestety nie znam się na tym, więc nie dałem rady z najbardziej eleganckim podejściem, mimo wszystko działa ok. założyłem, że są tylko 2 kolumny, nie testowałem z większą ilością. wrzuć w nowy moduł i możesz używać funkcji w komórkach excela.

Function sredniawazona(dane As Range) As Double
    col = dane.Column
    Row = dane.Row
    lastrow = dane.Rows.Count
    j = lastrow - 1 + Row
    For i = Row To j
        sredniawazona = sredniawazona + Cells(i, col).Value * Cells(i, col + 1).Value
        waga = waga + Cells(i, col + 1).Value
    Next
    sredniawazona = sredniawazona / waga
End Function

alii

  • alii
  • wiadomość Użytkownik

  • 2413 wypowiedzi

Wysłane 2017-03-09 18:34 , Edytowane 2017-03-09 18:34

dzięki, nie mam zupełnie pojęcia czy to tak ma być najwyżej będzie źle, dzięki za pomoc :)

Gigabyte B460M; i7 10700; HyperX 32GB 2133Mhz; GTX 1060 GAMING X 6G; Plextor PX-128M5Pro; ADATA SU900; SanDisk SD6PP4M; Samsung 500GB 970 EVO Plus; SeaSonic 650PX; Noctua NH-U12P; Jonsbo RM3; TP-Link Archer TX3000E; Roccat Kone PRO + SPC Gear M.Pad Endorphy + HP Wireless K5510 WHITE SLIM; Sennheiser HD 555|Logitech G51 |LCD Eizo S2031W-BK|

Pioter

  • Pioter
  • wiadomość Użytkownik

  • 867 wypowiedzi

Wysłane 2017-03-10 07:23

a jeszcze 1 sprawa, lepiej by wyglądało, jakby zmienne były deklarowane ;) vba tego zazwyczaj nie wymaga.

Strona 1 z 1 1
skocz

Kto jest online: 1 użytkowników, 549 gości

frac ,