Przesunięty przez: Eltokar 06-06-2008, 11:06 |
Losowe dobieranie zdjęć na podstawie oceny |
Autor |
Wiadomość |
Radzia [Usunięty]
|
Wysłany: 29-05-2007, 12:07 Losowe dobieranie zdjęć na podstawie oceny
|
|
|
Cześć, robię badanie z psychologii, część z którą mam problem polega na ocenie a później parowaniu ze sobą odpowiednich zdjęć.
Najpierw chciałbym żeby excel usuną wszystkie wiersze które w kolumnie M mają zakodowany błąd czyli wpisaną literę E
następnie potrzebuje aby program z komórek (I11:I70) wybrał:
4 najbardziej negatywne zdjęcia czyli najbardziej zbliżone do -250 (krańce skali to od -250 do 250)
4 neutralne zdjęcia, czyli takie najbardziej zbliżone do 0
4 pozytywne zdjęcia - najbardziej zbliżone do 250
a następnie sparował ze sobą losowo zdjęcia - nazwy zdjęć mieszczą się w
komórkach (D11:D70):
pozytywne - pozytywne
neutralne - pozytywne
neutralne - neutralne
neutralne - negatywne
negatywne - negatywne
negatywne - pozytywne
[ Dodano: 2007-06-02, 19:26 ]
Sorry za podbijanie, ale jest to dla mnie bardzo ważne bo tego co mi jest potrzebne nie mogę zrobić ręcznie (tzn policzyć to na piechotę i włożyć losy do kapelusza) procedura badania wymaga aby policzyć to szybko no i czekam już parę dni i nikt się nie odezwał. Jestem excelowym laikiem i przydałyby mi się od Was jakiekolwiek uwagi. Najważniejsze czy w ogóle da się to zrobić co chcę zrobić w excelu.
Załączam plik z wynikami do transformacji.
>Najpierw chciałbym żeby excel usuną wszystkie wiersze które w kolumnie M mają >zakodowany błąd czyli wpisaną literę E
to już wiem jak zrobić
chciałem aby excel robił to wszystko automatycznie, ale mogło by być w też tak że przeleje w 12 kolejnych komórek - 4 pozytywne, 4 neutralne i 4 negatywne zdjęcia a excel utworzy mi te pary:
pozytywne - pozytywne
neutralne - pozytywne
neutralne - neutralne
neutralne - negatywne
negatywne - negatywne
negatywne - pozytywne
wyniki.rar
|
Pobierz Plik ściągnięto 655 raz(y) 2.19 KB |
|
|
 | ID posta:
7006
|
|
|
 |
|
|
|
bezet-1147
Exceloholic

Wersja: Win Office 2007
Pomógł: 21 razy Posty: 123
|
Wysłany: 20-06-2007, 14:27 Zdjęcia są wybierane automatycznie i potem tasowane.
|
|
|
Niestety, nie jest to pełna automatyka, ale myślę, że jest to jakiś krok do przodu.
Oto co trzeba zrobić.
1. Proszę uaktywnić Edytor Visual Basic (Alt+F11), a następnie wpisać tam kod makra (makro jest w punkcie 6).
2. Następnie, w arkuszu "wyniki" proszę umieścić jakiś obiekt graficzny (jego rodzaj nie ma tu znaczenia, może to być np. prostokąt lub elipsa), a następnie, korzystając z prawego klawisza myszy, przypisać temu obiektowi powyższe makro. Jak ktoś chce, to może ten obiekt sformatować po swojemu i nadać mu nazwę (też prawy klawisz) ale dla istoty sprawy nie ma to żadnego znaczenia.
3. Teraz kliknąć gdziekolwiek poza obiektem (żeby wyjść z edycji obiektu).
4. I na koniec, kliknąć na obiekcie, żeby uruchomić makro.
5. Bardzo proszę o informację, czy to co zaproponowałem załatwiło problem.
Bogusław
6. A oto tekst makra:
Kod: | Sub łącz_losowo_zdjęcia()
'
' Procedurę napisał 2007-06-20, autor: bezet-1147
'
'
Sheets("wyniki").Select
Sheets("wyniki").Copy Before:=Sheets(1)
Sheets("wyniki").Select
Sheets("wyniki").Copy Before:=Sheets(1)
Sheets("wyniki (2)").Select
Sheets("wyniki (2)").Move After:=Sheets(3)
Sheets("wyniki (3)").Select
Sheets("wyniki (3)").Move After:=Sheets(3)
Sheets("wyniki (3)").Select
Sheets("wyniki (3)").Name = "rezultaty"
Cells.Select
Selection.ClearContents
Range("A1").Select
Sheets("wyniki (2)").Select
Range("AA1").Select
ActiveCell.FormulaR1C1 = "Indeks_1"
Range("AA2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AA3").Select
ActiveCell.FormulaR1C1 = "2"
Range("AA2:AA3").Select
Selection.AutoFill Destination:=Range("AA2:AA72"), Type:=xlFillDefault
Range("AA2:AA72").Select
Range("AC11").Select
ActiveCell.FormulaR1C1 = "=0-RC[-20]"
Range("AC11").Select
Selection.AutoFill Destination:=Range("AC11:AC71"), Type:=xlFillDefault
Range("AC11:AC71").Select
Range("AD11").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]<0,-RC[-1],RC[-1])"
Range("AD11").Select
Selection.AutoFill Destination:=Range("AD11:AD71"), Type:=xlFillDefault
Range("AD11:AD71").Select
Rows("11:71").Select
Selection.Sort Key1:=Range("I11"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Rows("11:14").Select
Selection.Copy
Sheets("rezultaty").Select
ActiveSheet.Paste
Sheets("wyniki (2)").Select
Rows("11:71").Select
Selection.Sort Key1:=Range("AD11"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Rows("11:14").Select
Selection.Copy
Sheets("rezultaty").Select
Rows("5:5").Select
ActiveSheet.Paste
Sheets("wyniki (2)").Select
Rows("11:71").Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("I11"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Rows("11:14").Select
Selection.Copy
Sheets("rezultaty").Select
Rows("9:9").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("wyniki (2)").Select
Rows("2:72").Select
Selection.Sort Key1:=Range("AA2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Sheets("rezultaty").Select
Range("R1").Select
ActiveCell.FormulaR1C1 = "=RAND()"
Range("R1").Select
Selection.AutoFill Destination:=Range("R1:R12"), Type:=xlFillDefault
Range("R1:R12").Select
Range("P1").Select
ActiveCell.FormulaR1C1 = "poz1"
Range("P2").Select
ActiveCell.FormulaR1C1 = "poz2"
Range("P3").Select
ActiveCell.FormulaR1C1 = "poz3"
Range("P4").Select
ActiveCell.FormulaR1C1 = "poz4"
Range("P5").Select
ActiveCell.FormulaR1C1 = "neu1"
Range("P6").Select
ActiveCell.FormulaR1C1 = "neu2"
Range("P7").Select
ActiveCell.FormulaR1C1 = "neu3"
Range("P8").Select
ActiveCell.FormulaR1C1 = "neu4"
Range("P9").Select
ActiveCell.FormulaR1C1 = "neg1"
Range("P10").Select
ActiveCell.FormulaR1C1 = "neg2"
Range("P11").Select
ActiveCell.FormulaR1C1 = "neg3"
Range("P12").Select
ActiveCell.FormulaR1C1 = "neg4"
' Teraz będzie trzykrotne losowe tasowanie 12 rekordów
Rows("2:12").Select
Selection.Sort Key1:=Range("R2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Sort Key1:=Range("R2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Sort Key1:=Range("R2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Koniec tasowania
Range("A21").Select
ActiveCell.FormulaR1C1 = "=R[-20]C[15]"
Range("A21").Select
Selection.AutoFill Destination:=Range("A21:A32"), Type:=xlFillDefault
Range("A21:A32").Select
Rows("2:12").Select
Range("A15").Select
ActiveCell.FormulaR1C1 = " Arkusz ""wyniki"" nie był zmieniany przez makro." _
& " Makro korzystało z kopii Arkusza ""wyniki"", czyli z Arkusza ""wyniki (2)""."
Range("A16").Select
ActiveCell.FormulaR1C1 = _
" Najpierw zostało wyszukanych 12 rekordów (zdjęć), " & _
"które następnie Excel trzykrotnie potasował losowo."
Range("A17").Select
ActiveCell.FormulaR1C1 = " A teraz, począwszy od komórki A21 (poniżej), " _
& "trzeba posuwać się w dół kolumny i (niestety) ""ręcznie"" łączyć zdjęcia w pary."
Range("A18").Select
ActiveCell.FormulaR1C1 = _
" Kolejność zdjęć w komórkach A21-A32 (poniżej) jest identyczna " & _
"z kolejnością rekordów znajdujących się w wierszach od nr 1 do nr 12 (powyżej)."
Range("A19").Select
ActiveCell.FormulaR1C1 = _
" UWAGA! przed każdym ponownym użyciem makra, " & _
"należy wpierw koniecznie usunąć: Arkusz ""wyniki (2)"" i Arkusz ""rezultaty""."
Range("A15:A18").Select
Selection.Font.ColorIndex = 41
Range("A19").Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
Range("A15").Select
End Sub |
|
|
 | ID posta:
8498
|
|
|
 |
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 20-06-2007, 17:18
|
|
|
Zobacz do załącznika czy tak może być (rozwiązanie na formułach). Nic nie piszesz o powtórzeniach, więc nie działam w tym kierunku.
Pozdrawiam
zliczenia dla miast.zip
|
Pobierz Plik ściągnięto 520 raz(y) 8.37 KB |
|
_________________ Trebbor@wp.pl |
|
 | ID posta:
8505
|
|
|
 |
|
|
bezet-1147
Exceloholic

Wersja: Win Office 2007
Pomógł: 21 razy Posty: 123
|
Wysłany: 20-06-2007, 19:04 jest gdzieś błąd w mojej procedurze
|
|
|
.
1. Uwaga ! Jest błąd w moim kodzie makra, więc proszę na razie tego kodu nie kopiować. W trakcie edytowania kodu, kilkakrotnie go zapuszczałem i wszystko działało zgodnie z oczekiwaniami. Ale po przeczytaniu posta Trebora, uruchomiłem moje makro jeszcze raz i pojawiły się nieoczekiwane rezultaty. Widocznie podczas fazy końcowej pisania makra (czyszczenia kodu), musiałem coś narozrabiać.
Zaczynam szukać tego błędu. Jak poprawię - dam znać.
2. Trebor, Twoje rozwiązanie jest rewelacyjnie krótkie. Na razie nie miałem jednak czasu, by je przeanalizować. Ale na pewno to zrobię.
.
[ Dodano: 2007-06-20, 20:37 ]
.
Uff! Odetchnąłem z ulgą. Błędu w kodzie nie ma.
Doszedłem, że przyczyną złego działania było to, że w moim Excelu w Menu: Narzędzia/Opcje/Przeliczanie, miałem ustawione przeliczanie na "ręczne", zamiast na "automatyczne". Ustawiłem na automatyczne i wszystko chodzi jak należy.
Przepraszam za zamieszanie.
Bogusław
.
[ Dodano: 2007-06-20, 21:25 ]
.
Wkurzyłem się. Przed chwilą już po raz trzeci w mej krótkiej historii forumowicza, wylogowało mnie w trakcie pisania postu i wszystko diabli wzięli.
Wiem, wiem, już przeczytałem poradę,że najlepiej przed wysłaniem zapisać ale jakoś nie mogę wyrobić w sobie tego nawyku.
Naprawdę. Jest to baaaaaaaardzo wkurzające. Rozumiem, że wywala dla bezpieczeństwa ale Szanowna Administracjo pozwól mi odzyskać to, nad czym pracowałem i co napisałem!!!!
.
[ Dodano: 2007-06-20, 21:46 ]
.
1. Trebor, jestem pod wrażeniem tego co zrobiłeś w kolumnach A, B i C. Małe, a piękne (bez żadnych aluzji polit.).
2. Kolumny F i G. Hmmmmm, też małe ale jest ale.
Po pierwsze po kolejnym (F9) zdarza się, że niektóre zdjęcia parują się ze sobą samym (a tak przecież nie może być), gdy jednocześnie innego zdjęcia nie ma w żadnej z par, mimo że jest ono jednym z dwunastu (tak też nie może być).
Po drugie brakuje mi identyfikacji zdjęć. Może być przecież tak, że w zestawie 12 zdjęć trafią się nam dwie, a nawet trzy lub cztery identyczne oceny (np. 4 x 250). I co wtedy? Nie będziemy wiedzieli, który rekord należy do danej 250-tki.
Ja, ponieważ nie miałem pojęcia jak zrobić automatykę parowania, stwierdziłem, że najszybciej zrobi to człowiek, ręcznie. Potrzeba na to - myślę - mniej niż pół minuty.
Pozdrawiam.
Bogusław
P.S. Przed chwilą znowu mnie wylogowało.
Zaczynam mieć tego dosyć!!!!!!!!!! |
|
 | ID posta:
8507
|
|
|
 |
|
|
Tajan

Pomógł: 5155 razy Posty: 11264
|
Wysłany: 21-06-2007, 08:10
|
|
|
W załączeniu moja propozycja rozwiązania. Podobnie jak w rozwiązaniu Trebora, do wybierania danych używająca formuł tablicowych, ale pozwalająca na wyświetlenie zarówno wartości pomiaru, jak i nazwy zdjęcia. Do losowania par zastosowałem makro.
parowanie zdjec.zip
|
Pobierz Plik ściągnięto 527 raz(y) 15.26 KB |
|
|
 | ID posta:
8533
|
|
|
 |
|
|
bezet-1147
Exceloholic

Wersja: Win Office 2007
Pomógł: 21 razy Posty: 123
|
Wysłany: 21-06-2007, 08:53
|
|
|
.
I TO JEST TO!
Tajan, jestem pod wrażeniem. Choć nie rozumiem jak to działa ale widzę, że Twoje rozwiązanie daje rezultaty takie jakich oczekiwał autor pytania.
(proponuję, żeby może wycofać z Forum mój kod-kobyłę, bo czuję się teraz raczej marnie).
Pozdrawiam.
Bogusław
. |
|
 | ID posta:
8537
|
|
|
 |
|
|
Artik
Artik


Wersja: Win Office 365
Pomógł: 3228 razy Posty: 10691
|
Wysłany: 22-06-2007, 08:55
|
|
|
bezet-1147 napisał/a: | (proponuję, żeby może wycofać z Forum mój kod-kobyłę, bo czuję się teraz raczej marnie) |
Jeśli chcesz poprawić sobie samopoczucie , to masz możliwość edycji każdego swojego posta.
Artik |
|
 | ID posta:
8626
|
|
|
 |
|
|
toxic
ExcelSpec

Pomogła: 139 razy Posty: 356
|
Wysłany: 22-06-2007, 09:01
|
|
|
Moim zdaniem szkoda wywalać tyle pracy. Rozumiem Twój ból (bardzo często męczę się nad czymś, robię szopki, a później okazuje się, że rozwiązanie było bardzo proste). Zostaw go ku przestrodze innym użytkownikom |
|
 | ID posta:
8629
|
|
|
 |
|
|
bezet-1147
Exceloholic

Wersja: Win Office 2007
Pomógł: 21 razy Posty: 123
|
Wysłany: 22-06-2007, 09:11
|
|
|
.
Przekonaliście mnie. Dobra, zostawiam.
. |
|
 | ID posta:
8631
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|