Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 :-P
ID posta: 8629 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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