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
|
|