Terve,
omista ohjelmointiajoista on jo aikaa joten asiat ovat ihan unohtuneet. Jos jollain on ideoita ja aikaa, niin viitsisitkö jelppiä? Tarvii kipeästi ja omat taidot ei riitä, niin ideoita kaivataan! :)
On siis Excel -projekti, jossa on sheettejä kahdesta noin kahteen kymmeneen. Sheetit on nimetty näin: "Haku", "1", "2", "3" jne jne..
"Numerosheeteissä" pohja on kaikissa sama:
[ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [Etunimi] [Sukunimi] [Osoite] [Postit. nro] [Postit.paikka] [puhelin] [arvo1] [arvo2] [arvo3] Erkki Esimerkki Korpitie 123 X 3 69696 Hilsinki 012-345678 x x x
Eli ensimmäinen rivi sisältä vain painikkeet joita painamalla allaolevat tiedot saadaan lajiteltua. Esim. kun painan "Postitoimipaikka"-painiketta, niin kaikki allaolevat tiedot lajitellaan automaattisesti postitoimipaikan mukaan. Sama homma vastaavasti muilla kentillä. "Arvo" tilat voivat saada arvokseen vain "x" tai tyhjän.
Tuo tietojen lajíttelu on ensimmäinen kysymysmerkki minulle.
Toinen on ensimmäisen sheetin "haku". Eli yhteen ruutuun kirjoitetaan haettava sisältä, ja painikkeesta painamalla käydään kaikki olemassaolevat sheetit läpi ja läimästään ensimmäiselle sheetille nätisti kaikki vastaavat tiedot.
Eli jos haetaan sanalla "pekka" niin näkyviin tulee kaikista sheeteistä allekain ne henkilöt ja niiden tiedot joista löytyy sana "pekka". Haun pitäisi kattaa niin Pekka nimiset, pekkatiellä asuvat kuin pekkalassa majailevat henkilöt.
Toivottavasti siinä oli tarpeellinen tieto. Ehkä vähän sekavasti kirjoitettu, mutta jos edes joku ymmärtäisi :)
En välttämättä kaipaa valmista pohjaa, vaan myös ideat ja ajatukset otetaan mielenkiinnolla vastaan! Aika vain loppuu kesken enkä saa tuota millään tehtyä jos kukaan ei auta.. Pitää mennä 3.60€ päivärahan puolesta tetsaamaan vajaan viikon sisällä.
Sorttauksen voi toteuttaa oheista koodinpätkää muokkaamalla.
ActiveSheet.UsedRange.Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlYes
Oheinen sortaa A-sarakkeen mukaan nousevaan järjestykseen, vaihtamalla a2-->b2 saat b sarakkeen mukaisen järjestyksen. Laskevaan järjestykseen saat vaihtamalla xlAscending --> xlDescending
Tuon haun voisi toteuttaa oheista koodia(ei juurikaan testattu) muokkaamalla:
Sub Hakua() hakusana = "pekka" For Each S In ActiveWorkbook.Sheets 'käydään läpi jokainen välilehti If S.Name <> "Haku" Then ' ei kuitenkaan haku lehdykkää i = 3 'määritellään ensimmäinen hakurivi Do Until S.Cells(i, "A").Value = "" 'loopataan joka rivi kunnes A-sarake on tyhjä j = 1 'määritellään ensimmäinen hakusarake Do Until S.Cells(i, j).Value = "" If InStr(1, S.Cells(i, j).Value, hakusana) > 0 Then 'verrataan hakusanaan 'jos löytyi niin kopioidaan haku lehdelle KopioiRiviHakuun S.Name, i Exit Do End If j = j + 1 Loop i = i + 1 Loop End If Next End Sub Sub KopioiRiviHakuun(S As String, ByVal Rivi As Long) hakui = 10 'hakutulokset alkavat riviltä 10 Do Until Sheets("haku").Cells(hakui, "A").Value = "" 'etsitään ensimmäinen tyhjärivi haku lehdeltä hakui = hakui + 1 Loop 'kopioidaan tiedot annetusta sheetistä ja rivistä sar = 1 'kopioidaan alkaen sarakkeesta 1 Do Until Sheets(S).Cells(Rivi, sar).Value = "" Sheets("haku").Cells(hakui, sar).Value = Sheets(S).Cells(Rivi, sar).Value sar = sar + 1 Loop End Sub
Täysin off-topiccia tähän väliin (pahoittelen):
Minä kirjoitti:
Pitää mennä 3.60€ päivärahan puolesta tetsaamaan vajaan viikon sisällä.
1.1.2007 alkaen 3,8e.
Kiitos paljon Hycke! Tosta on jo hyvä viritellä. Onneksi on ihmisiä jotka osaavat :) Tuota kun tuijottaa, niin huomaa kuinka vähän noista oikeasti muistaa.. :/
3,80€/päivä? Jee.. Minähä rikastun :$ Tein jo pankin kanssa sopimuksen siitä, nyt tietävät miten toimia jos tilille ei enempää mahdu!
Sain tietojen haun toimimaan ja homma lähti jo käyttöön. Yksi tuossa jäi vain vaivaamaan..
Haku erottelee isot ja pienet kirjaimet. Hakusana "Pekka" ei löydä pekkkaa jos nimi on kirjoitettu vaikka vahingossa pienellä. Myöskään "pekka" ei löydä "Pekka":a..
Periaatteessa tuo ei haittaa, mutta tuntuu aika herkkätunteiselta. Voiko tuolle tehdä jotakin?
InStr:lle voi antaa parametrin vbTextCompare, jolloin eroa ei ole.
Jep, näin onkin. Kiitos sooda! Onko olemassa jotain hyviä saitteja vba:sta? Oppaita ja esimerkkejä
Aihe on jo aika vanha, joten et voi enää vastata siihen.