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

  tytuł wątku:
Wątki dyskusji

średnia w vba


otwartyotwarty rozpoczął: alicelee postów: 14



napisał: jottad
postów: 118


umieszczony:
14 lutego 2007
01:00

edytowany:
14 lutego 2007
01:17

  
Cytat:

A u mnie wylicza przedzialy, a potem wysyla dane. Bo nie wiem jak zrobic liczenie częstosci.. :/
mozecie pomoc? Prosze... :(:|


CZ1 = Application.WorksheetFunction.Frequency("B4:B103", "D4:D9")
TextBox10.Text = (CZ1) 'to jest szósta
[/vbcode]


Zasadnicza uwaga. Wyników obliczenia częstości nie możesz wyświelić w TextBoxie. Jest to tablica dwuwymiarowa, więc albo użyjesz tyle Texbox'ów, ile masz przedziałów (+1, oczywiście) i w pętli kolejno przypiszesz do nich wartość każdego przedziałów, albo użyjesz kontrolki, w której możesz wyświetlić listę. Jak sama nazwa wskazuje najodpowiedniejsza byłaby kontrolka ListBox, czyli pole listy. Wtedy jest to proste:
[vbcode]
CZ1 = Application.WorksheetFunction.Frequency(.Range("B4:B103"), _
Array(PD9, PD8, PD7, PD6, PD5, maxim))

ListBox1.List = CZ1
[/vbcode]

Pamiętaj, że dla funkcji Częstość przedziały powinny być podane w kolejności rosnącej.

A zmienną CZ1 zadeklaruj jako Variant!
Administracja serwisu prosi o poprawienie znaczników [vbcode]
napisał: alicelee
postów: 57


umieszczony:
13 lutego 2007
23:30

  
Ale wiecie jaki jest problem... że nie liczy częstości, bo nie ma z czego. Najpierw mi wylicza przedziały, a potem powinno na podstawie tych wartosci robic frequency, a potem wysylac dane do excela.
A u mnie wylicza przedzialy, a potem wysyla dane. Bo nie wiem jak zrobic liczenie częstosci.. :/
mozecie pomoc? Prosze... :(:|
Jak moge wyliczyc czestosc w opraciu o dane z B4:B103, i przedzialow policzonych w textboxach, ale nie wyslanych jeszcze do excela.
ZAlaczam kod:
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
    Dim srednia, suma, minim, maxim, rozmiar, PD5, PD6, PD7, PD8, PD9, CZ1, CZ2, CZ3, CZ4, CZ5, CZ6 As Double
        With Worksheets("2.2.1.")
        srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
        TextBox15.Text = (srednia)      ' wylicza średnią z wartości B4:B103
        suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
        TextBox16.Text = (suma / 100)   ' wylicza .....
        TextBox19.Text = (srednia / (suma / 100))
        maxim = Application.WorksheetFunction.Max(.Range("B4:B103"))
        TextBox18.Text = (maxim)        ' wylicza maximum z wartości B4:B103
        minim = Application.WorksheetFunction.Min(.Range("B4:B103"))
        TextBox17.Text = (minim)        ' wylicza minimum z wartości B4:B103
        rozmiar = (((maxim) - (minim)) / (7.5))
        TextBox20.Text = (rozmiar)
        TextBox3.Text = (maxim)         'to jest pierwsza komórka z przedziałów
        PD5 = ((maxim) - (rozmiar))
        TextBox4.Text = (PD5)           'to jest druga komórka z przedziałów
        PD6 = ((PD5) - (rozmiar))
        TextBox5.Text = (PD6)           'to jest trzecia komórka z przedziałów
        PD7 = ((PD6) - (rozmiar))
        TextBox7.Text = (PD7)           'to jest czwarta komórka z przedziałów
        PD8 = ((PD7) - (rozmiar))
        TextBox8.Text = (PD8)           'to jest piąta komórka z przedziałów
        PD9 = ((PD8) - (rozmiar))
        TextBox6.Text = (PD9)           'to jest szósta komórka z przedziałów
                
        CZ1 = Application.WorksheetFunction.Frequency("B4:B103", "D4:D9")
        TextBox10.Text = (CZ1)           'to jest szósta komórka z przedziałów
                
        End With
End Sub

Private Sub btn_dalej5_Click()
frm_222.Show
Unload Me
End Sub

Private Sub Cmd_Wykres_Click()
frm_wykres.Show
End Sub

' \\\ wyslanie danych do Excela /// '

Private Sub cmd_wyslij_Click()
'zatwierdzenie danych do wpisania
Dim początkowy_wiersz_tabeli, wiersz, kolumna, kolumna2 As Double
początkowy_wiersz_tabeli = -3
wiersz = Application.WorksheetFunction.CountA(Range("D:E")) + początkowy_wiersz_tabeli
'Range("D:E")- zakres, w którym jest tabela to D4:E9
kolumna = 4
'kolumna2 = 4
'i dalej:
Worksheets("2.2.1.").Cells(wiersz, kolumna) = TextBox3
Worksheets("2.2.1.").Cells(wiersz + 1, kolumna) = TextBox4
Worksheets("2.2.1.").Cells(wiersz + 2, kolumna) = TextBox5
Worksheets("2.2.1.").Cells(wiersz + 3, kolumna) = TextBox7
Worksheets("2.2.1.").Cells(wiersz + 4, kolumna) = TextBox8
Worksheets("2.2.1.").Cells(wiersz + 5, kolumna) = TextBox6

'Worksheets("2.2.1.").Cells(wiersz, kolumna2) = TextBox10
'Worksheets("2.2.1.").Cells(wiersz + 1, kolumna2) = TextBox11
'Worksheets("2.2.1.").Cells(wiersz + 2, kolumna2) = TextBox12
'Worksheets("2.2.1.").Cells(wiersz + 3, kolumna2) = TextBox13
'Worksheets("2.2.1.").Cells(wiersz + 4, kolumna2) = TextBox14
'Worksheets("2.2.1.").Cells(wiersz + 5, kolumna2) = TextBox9
End Sub

napisał: alicelee
postów: 57


umieszczony:
13 lutego 2007
23:07

  
Możecie być ze mnie dumni :D:D:D poradziłam sobie hehe :) na kolumnie D już działa :D
' \\\ wyslanie danych do Excela /// '

Private Sub cmd_wyslij_Click()
'zatwierdzenie danych do wpisania
Dim początkowy_wiersz_tabeli, wiersz, kolumna As Double
początkowy_wiersz_tabeli = -3
wiersz = Application.WorksheetFunction.CountA(Range("D:E")) + początkowy_wiersz_tabeli
'Range("D:E")- zakres, w którym jest tabela to D4:E9
kolumna = 4
'i dalej:
Worksheets("2.2.1.").Cells(wiersz, kolumna) = TextBox3
Worksheets("2.2.1.").Cells(wiersz + 1, kolumna) = TextBox4
Worksheets("2.2.1.").Cells(wiersz + 2, kolumna) = TextBox5
Worksheets("2.2.1.").Cells(wiersz + 3, kolumna) = TextBox7
Worksheets("2.2.1.").Cells(wiersz + 4, kolumna) = TextBox8
Worksheets("2.2.1.").Cells(wiersz + 5, kolumna) = TextBox6

End Sub


Ale poweidzcie mi dlaczego, żeby wpisywało do D4 muszę mieć wpisane:
początkowy_wiersz_tabeli = -3
wiersz = Application.WorksheetFunction.CountA(Range("D:E")) + początkowy_wiersz_tabeli


Bo muszę umieć to wyjaśnić, a szczerze mówiąc to zrobiłam, że działa, ale nie wiem czemu :)
napisał: alicelee
postów: 57


umieszczony:
13 lutego 2007
01:23

  
Napisalam tak:
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
    Dim srednia, suma, minim, maxim, rozmiar, PD5, PD6, PD7, PD8, PD9, CZ1, CZ2, CZ3, CZ4, CZ5, CZ6 As Double
        With Worksheets("2.2.1.")
        srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
        TextBox15.Text = (srednia)      ' wylicza średnią z wartości B4:B103
        suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
        TextBox16.Text = (suma / 100)   ' wylicza .....
        TextBox19.Text = (srednia / (suma / 100))
        maxim = Application.WorksheetFunction.Max(.Range("B4:B103"))
        TextBox18.Text = (maxim)        ' wylicza maximum z wartości B4:B103
        minim = Application.WorksheetFunction.Min(.Range("B4:B103"))
        TextBox17.Text = (minim)        ' wylicza minimum z wartości B4:B103
        rozmiar = (((maxim) - (minim)) / (7.5))
        TextBox20.Text = (rozmiar)
        TextBox3.Text = (maxim)         'to jest pierwsza komórka z przedziałów
        PD5 = ((maxim) - (rozmiar))
        TextBox4.Text = (PD5)           'to jest druga komórka z przedziałów
        PD6 = ((PD5) - (rozmiar))
        TextBox5.Text = (PD6)           'to jest trzecia komórka z przedziałów
        PD7 = ((PD6) - (rozmiar))
        TextBox7.Text = (PD7)           'to jest czwarta komórka z przedziałów
        PD8 = ((PD7) - (rozmiar))
        TextBox8.Text = (PD8)           'to jest piąta komórka z przedziałów
        PD9 = ((PD8) - (rozmiar))
        TextBox6.Text = (PD9)           'to jest szósta komórka z przedziałów
        
        
        'CZ1 = Application.WorksheetFunction.Frequency("B4:B103", "D4:D9")
        'TextBox10.Text = (CZ1) 'to jest szósta komórka z przedziałów
                
        End With
End Sub


Wszstko pieknie liczy, poza czestoscią. ale chyba nie liczy jej dlatego, ze w komorkach od D4:D9 nie ma wartosci. a nie ma wartosci, bo jak w ControlSource wpisuje '2.2.1.'!D4 itp. az do D9 to wtedy mi wpisuje tlyko w D4 wartosc a potem juz nie. Wiesz moze jak wpisac otrzymana wartosc do komorki w excelu, ale nei za pomoca ControSource. Bo jak tak pisze to nie dziala.
Proszę o pomoc... :)
napisał: alicelee
postów: 57


umieszczony:
12 lutego 2007
20:45

  
Aktualnie mam coś takeigo i nawet działa :):):)
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
    Dim srednia, suma As Double
        With Worksheets("2.2.1.")
        srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
        TextBox15 = (srednia)
        suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
        TextBox16 = (suma / 100)
        End With
End Sub



Dzięki Artik i cała reszta :D
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
22:10

  
Boi na wczesniejszej zakladce mam tylko napisane tak:
Private Sub btn_dalej2_Click()
MultiPage1.Value = MultiPage1.Value + 1
End Sub


a może tu gdzies trzeba od razu te fromuly, do texboxów z nastepnej zakladki?
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
22:03

  
OK. Na frm_221 mam multipage z kilkoma zakladkami. w przedostatniej jest textbox, do ktorego wpisuje 100 pomiarow, a te pomiary trafiaja do excela do arkusza 2.2.1. do komorek od B4:B103. Na frm_221 mam przycisk dalej, ktorym przechodze do nastepnej zakladki. chcialabym, zeby po tym przejsciu, na kolejnej zakladce w umieszczonych tekstboxach poawilo sie kilka przeliczen, w tym srednia w textboxie15.
To moze powinno byc przy przycisku juz to gdzies ustawione.. tylko jak... ehh
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
20:59

  
Dzieki teraz chociaz nie wywala bledu ;) ale zmieniłam i nie działa dalej... w arkuszu "2.2.1" w komorkach od B4:B103 mam dane ktore powinny dac srednią 50,5. Liczba ta powinna sie wyswietlic w komorce TextBox15, ale sie nie wyswietla. wiesz moze dlaczego?

Private Sub TextBox15_Change()
Dim zmienna As Integer
   With Worksheets("2.2.1.")
   zmienna = Application.WorksheetFunction.Average(.Range("B4:B103"))
End Sub

napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
16:39

  
No to napisalam tak, ale po zarejestrowaniu tego makra nie bardzo wiedzialam o co tam chodzi :/
Private Sub TextBox15_Change()
Dim zmienna As Integer
   With Worksheets("2.2.1.")
   zmienna = Application.WorksheetFunction.Average([B4]:[B103])
End Sub


Co mam wpisać żeby zadziałało?
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
15:51

  
Cześć!
Jak zapisać w VBA funkcję liczącą średnią z komórek B4:B103?


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z