napisał: grizz postów: 9
umieszczony: 17 kwietnia 2012 18:51
|
|
? Dziwne :) Dzięki :) |
|
napisał: Trebor postów: 1209
umieszczony: 17 kwietnia 2012 16:12
edytowany: 17 kwietnia 2012 16:13
|
|
Od początku.
W pliku zamieszczonym przez Ciebie na forum usuwam dane z kolumny C i D ponieważ według mnie są zbędne.
Usuwam również to co jest od kolumny AH do AJ, aby mieć jasność co robi moje makro.
Uruchamiam Twoje makro Leksem i faktycznie nic się nie dzieje.
Teraz dopisuje do każdego ciągu w kolumnie B na końcu spację.
Uruchamiam ponownie makro Leksem i coś zaczyna się dziać.
Teraz wymieniam funkcję Function SlownikBrakSlowa(leksem) As Boolean i już widać coś więcej - nie jest dopisywane drugi raz słowo już znajdujące się w słowniku.
Czy to co napisałem powyżej to Prawda czy Fałsz? |
|
napisał: grizz postów: 9
umieszczony: 16 kwietnia 2012 22:32
|
|
Jak skopiowałem tą funkcję zamiast mojej, to też nie działało. |
|
napisał: Trebor postów: 1209
umieszczony: 13 kwietnia 2012 21:16
|
|
Po pierwsze usuń z arkusza Twoją funkcję. Nie została napisano jako arkuszowa.
Po drugie pisałem o pewnych zmianach których nie zawarłeś w pliku zamieszczonym na forum.
Cud się nie wydarzy. Jeśli nie wprowadzisz zmian lub nie uzasadnisz powodu ich pomijania do niczego nie dojdziemy. |
|
napisał: grizz postów: 9
umieszczony: 13 kwietnia 2012 20:40
|
|
Raz działa, a raz nie, znaczy nigdy nie dodaje do słownika, ale czasami się wyświetla msgbox. Arkusz3. |
|
napisał: Trebor postów: 1209
umieszczony: 13 kwietnia 2012 18:44
|
|
Daj to w pliku na forum. Napisz dla którego słowa się nie uruchamia (nie dopisuje do listy) |
|
napisał: grizz postów: 9
umieszczony: 13 kwietnia 2012 18:20
|
|
Teżsię nie zawsze uruchamia (dodaję testowego msgboxa) i nie działa :( |
|
napisał: Trebor postów: 1209
umieszczony: 13 kwietnia 2012 18:06
|
|
Dość mocno to skomplikowane.
1. Dodaj do każdego ciągu w kolumnie B na końcu spację (zorientujesz się o co chodzi)
2. Funkcja sprawdzająca czy dane słowo już jest na liście proponuję jak niżej:
Function SlownikBrakSlowa(leksem) As Boolean
For i = 2 To CInt((Arkusz3.Cells(1, 35).Value) + 2) Step 1
If Arkusz3.Cells(i, 35).Value = leksem Then
Arkusz3.Cells(i, 36).Value = Arkusz3.Cells(i, 36).Value + 1
SlownikBrakSlowa = False
Exit For
Else
SlownikBrakSlowa = True
End If
Next i
End Function |
|
napisał: Trebor postów: 1209
umieszczony: 12 kwietnia 2012 21:52
|
|
Jeśli nikt nie odpowie to jutro z wieczora dokładniej przeanalizuję Twój kod.
Pozdrawiam |
|
napisał: grizz postów: 9
umieszczony: 12 kwietnia 2012 21:36
|
|
Ale dlaczego moje makro do słownika czasami w ogóle się nie włączają? |
|
napisał: Trebor postów: 1209
umieszczony: 12 kwietnia 2012 21:23
|
|
Zerknij na początek na poniższe makro:
Sub spisz()
Dim i As Long, dane, j As Integer, k As Long
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
dane = Split(Cells(i, 2), " ")
For j = 0 To UBound(dane)
For k = 2 To Cells(Rows.Count, "AI").End(xlUp).Row
If dane(j) = Cells(k, "AI") Then Cells(k, "AJ") = Cells(k, "AJ") + 1: Exit For
Next k
If k > Cells(Rows.Count, "AI").End(xlUp).Row Then Cells(k, "AI") = dane(j)
Next j
Next i
End Sub |
|
napisał: grizz postów: 9
umieszczony: 12 kwietnia 2012 20:58
edytowany: 12 kwietnia 2012 21:10
|
|
Leksemy i WielkoscKlastra działają.
Nie działa dodawanie do slownika (czasami w ogóle się nie uruchamiają) - Makro w czasie rozbijania zdań na słowa sprawdza kolumnę ze słowami, czy to słowo występuje, jeśli tak, to dodaje 1 do ilości wystąpień tego słowa, jeśli nie, to dodaje słowo do kolumny i zwiększa wartość komórki przechowującej ilość słów w kolumnie.
1, AI - ilość słów w słowniku
AI - słowa
AH - numersłowa
AJ - ilość wystąpień słowa
kolumna A - słowa kluczowe
kolumna B - zdania
kolumny dalej przed AH - zdania podzielone na słowa |
|
napisał: grizz postów: 9
umieszczony: 12 kwietnia 2012 20:55
|
|
Chodzi o analizę leksemów.
SłowoKluczowe IlośćZdań
Zdanie SlowoZeZdania SlowoZeZdania ... NumerSlowa
Zdanie SlowoZeZdania SlowoZeZdania ... NumerSlowa
IloscSlowWSlowniku
NrSlowa Slowo IloscWystapień
... ... .... |
|
napisał: Trebor postów: 1209
umieszczony: 12 kwietnia 2012 19:32
|
|
Generalnie, czy zadaniem makra jest wykonanie listy słów w kolumny B? |
|
napisał: grizz postów: 9
umieszczony: 12 kwietnia 2012 13:09
|
|
Excel 2003. Procedura wywoływana z innej procedury (Leksem) nie zawsze działa. Poza tym nie działa jak trzeba, a wydaje mi się, że nie ma błędów.
Arkusz3
Leksemy - Rozbija zdania z drugiej kolumny na słowa i wypisuje je po prawej stronie, wrzuca każde słowo do DodajDoSlownika
WielkośćKlastra - liczy ilość zdań z danego hiperonimu (pierwsza kolumna) i wypisuje ją obok jego nazwy
DodajDoSlownika - Jeśli w słowniku nie ma danego słowa, to dodaje je na ostatnie miejsce w kolumnie AI, w kolumnie AH wpisuje numer słowa, a w AJ - 1
SlownikBrakSlowa - sprawdza kolumnę AI, czy jest tam podane słowo. Jeśli nie - false, zwiększa o jeden ilość wystąpień słowa w AJ.
1, AI - ilość słów w słowniku
http://dl.dropbox.com/u/60026233/Zeszyt1%20-%20Kopia.xls |
|
wstecz 1 dalej wszystkich stron: 1
|