Terve!
Mulla pyörii ohjelma excelissä, josta pitäisi saada poimittua tietoja toiseen taulukkoon.
Haettavana tietoina on tuotteen nimi (B3-B12), hinta (C3-C12) ja määrä (D3-D12). Tuotteita voi olla samaan aikaan kymmenen.
Tällaisia settejä tulee päivässä useita, joten ne pitäisi saada siellä toisessa excelissä vielä niin, että uudemmat menevät edellisien alapuolelle.
Se koska tiedot hakee, niin voisi olla vaikka 5 min välein.
Tack!
Tietoja toisesta Excel-taulukosta
18
530
Vastaukset
http://www.kundepuu.com/viewtopic.php?f=155&t=541
Keep EXCELing
@Kunde- ehkäen
Kiitos paljon avusta!
Vielä jos saisin asiasta rautalankaversion :)
Elikkä tiedosto josta tiedot haetaan on nimeltään hinnasto.xls ja jatkossa voi olla niin että siellä tulee jopa neljälle sheetille tietoja.
Ja tiedosto johon tiedot tuodaan on nimeltään yhteenveto.xls.
Ja huomasin et on vielä parempi jos tiedot haettaiskin silloin kun tiedostossa olevaa aikaa on jäljellä 30 sek sen viiden minuutin sijaan. Tällä saadaan tiedoista keskenään paremmin vertailukelpoisia. http://www.kundepuu.com/viewtopic.php?f=155&t=541&p=834#p834
Keep EXCELing
@Kunde- MitäVäliäSen
Vielä jos viitsit hieman auttaa.
Ohjelma hakee nyt kertaalleen tiedot kun painan run-nappia vba:ssa.
Sen jälkeen herjaa seuraavaa:HaeTiedotSuljetusta ei voi suorittaa. Makro ei ehkä ole käytettävissä tässä työkirjassa, tai kaikki makrot on ehkä poistettu käytöstä.
Sit siirsin laskurin, joka laskee aikaa alaspäin tuonne yhteenveto.xls sheet1:sen soluun B1. Kuinka muutan tuohon kaavaan, että kun toi lukema B1:ssä on alle 30 niin tämä vba hakee ne tiedot sieltä hinnastosta.
Onko sillä jotain vaikutusta asiaan että mulla on kokoajan molemmat taulukot auki, kun tossa kuitenkin puhutaan suljetusta? Toi hinnasto mulla pitääkin olla kokoajan auki.
Kiitoksia edelleen todella paljon viitseliäisyydestäsi! - Calcis
Vba ei varsinaisesti ole minun heiniä,mutta jos jotain ymmärsin niin kunden makrossa kohta:
"Aika = Now TimeSerial(0, 0, 30)
Application.OnTime Aika, "HaeTiedotSuljetusta"
..tulisi korvata Do loopilla joka seuraa B1 arvoa ja sitten Jos lausella:
Jos B1 = 30sekuntia niin sitten suoritetaan määritelty tietojen haku. - onetimeyet
Ei sit lähde millään toimimaan.
Jospa tehtäis niin, että teenkin tähän hinnasto.xls uuden välilehden taul2, jonne kerätään noi tiedot.
Elikkäs kun B1 oleva timeri on alle 30 niin silloin tänne taul2:seen tulee kopioitua B(3-12), C(3-12) ja D(3-12) olevat tiedot.
Ja taas seuraavan kerran kun toi ehto B1:ssä täyttyy niin tiedot kopioituvat edellisten alapuolelle. - jeppisjees
Näin olen sen nyt tehnyt, mut kun tämä ei hae tietoja automaattisesti, kylläkin hakee jos to aika ehto täyttyy kun painaa Run-nappia.
Sub Siirrä()
Dim vika2 As Integer
Dim Alue As Range
Dim i As Integer
For i = 9 To 19
If (Worksheets("hinnasto").Range("F5").Value < 7 And Worksheets("hinnastol").Range("F5").Value > 3) Then
vika2 = Worksheets("yhteenveto").Range("B65536").End(xlUp).Row 1
Worksheets("hinnasto").Range("B" & i).Copy Destination:=Worksheets("yhteenveto").Range("B" & vika2)
Worksheets("hinnasto").Range("G" & i).Copy Destination:=Worksheets("yhteenveto").Range("G" & vika2)
End If
Next
End Sub - Calcis
Kun ei tiedä mitä nuo F5 ehtoarvot 7>
- hippelispoppeli
Tuollasen virheilmoituksen antaa;
Compile error:syntax error
ja sen jälkeen ku painan ok niin antaa punaiseksi tuo Exit Loop.
Ja tosiaan sekunneista puhutaan tuossa F5:ssä.- Calcis
"Tuollasen virheilmoituksen antaa;
Compile error:syntax error
ja sen jälkeen ku painan ok niin antaa punaiseksi tuo Exit Loop."
Minä sekoilin, pitää olla Exit Do eikä Exit Loop
- Calcis
vba sitten toimii erilailla kuin oo basic ... mutta jos tuo toimisi
Sub Siirrä()
Dim vika2 As Integer
Dim Alue As Range
Dim i As Integer
Do
If Worksheets("hinnasto").Range("F5").Value = 6 Then
For i = 9 To 19
vika2 = Worksheets("yhteenveto").Range("B65536").End(xlUp).Row 1
Worksheets("hinnasto").Range("B" & i).Copy Destination:=Worksheets("yhteenveto").Range("B" & vika2)
Worksheets("hinnasto").Range("G" & i).Copy Destination:=Worksheets("yhteenveto").Range("G" & vika2)
Next
End If
Loop Until Worksheets("hinnasto").Range("A1").Value = 1
End Sub - jepuneula
Kiitos paljon kun viitsit jelpata :)
Nyt toi jumittaa koko excelin, jääkö tuossa sitten looppi jotenki päälle vai mikä?
Mä en itse vielä kauheesti ymmärrä tätä ohjelmointia, mut pikkuhiljaa alkaa itekkin jotain oppia.- Calcis
Looppi ja makro on päällä niin kauan kun hinnasto taulukon A1 soluun kirjaa arvon 1
Jos siinä on sitten liikaa yhtäaikaisia tapahtumia niin se voi sitten jumittaa exelin, kannattaa kokeilla sitä Sleep 500 tai Sleep 1000 määritystä, se voi auttaa.
OO basicissä ei ole tuota Application.OnTime toimintoa vaan aika laskuri suoritetaan vastaavalla Do loopilla looppaamalla Now() arvoa, jolloin calcissa rakentaisin tuon "siirä" makron toiminnon sen laskuri makron sisään.
- Calcis
kokeile lisätä siihen laskuri makroon seuraava:
Deadline = tähän solu jossa on päättymisaika.Value - TimeSerial(0, 0, 30)
Application.OnTime Deadline, "Siirrä"
... Siirrä on sitten seuraava:
Sub Siirrä()
Dim vika2 As Integer
Dim Alue As Range
Dim i As Integer
For i = 9 To 19
vika2 = Worksheets("yhteenveto").Range("B65536").End(xlUp).Row 1
Worksheets("hinnasto").Range("B" & i).Copy Destination:=Worksheets("yhteenveto").Range("B" & vika2)
Worksheets("hinnasto").Range("G" & i).Copy Destination:=Worksheets("yhteenveto").Range("G" & vika2)
Next
End Sub taulukon moduuliin missä se laskuri on....
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B1") = 30 Then
Range("B9:B19").Copy Worksheets("yhteenveto").Range("B65536").End(xlUp).Offset(1, 0)
Range("G9:G19").Copy Worksheets("yhteenveto").Range("G65536").End(xlUp).Offset(1, 0)
End If
End Sub
Keep EXCELing
@Kunde- jepuneula
Nonii, sain homman pelittämään seuraavalla koodilla:
Muokkasin tuon laskurin niin, että sillon kun se on yli 8 tai alle 3, niin antaa 0 muuten 30.
Tuo tekee sen että se antaa toisinaan useamman kerran samat tiedot, mutta kun kaksoiskappaleet saa helposti yhdellä napilla poistettua, niin ei ole ongelma.
Private Sub Worksheet_Calculate()
Dim vika2 As Integer
Dim Alue As Range
Dim i As Integer
If Worksheets("Taul1").Range("B1").Value = 30 Then
For i = 9 To 19
vika2 = Worksheets("Taul1").Range("B65536").End(xlUp).Row 1
Worksheets("Hinnasto").Range("B" & i).Copy Destination:=Worksheets("Taul1").Range("B" & vika2)
Worksheets("Hinnasto").Range("G" & i).Copy Destination:=Worksheets("Taul1").Range("G" & vika2)
Next
End If
End Sub
Nyt onkin sitte jatkotoimenpiteen aika :)
Mites onnistuu näiden kopioitujen tietojen siirtäminen taul5:een siten että jos sieltä ei löydy vastaavaa nimeä niin se kopioituu sinne, mutta jos sieltä jo sellainen löytyy niin sit se kopioi sen hintatiedon edellisen hintatiedon viereiseen sarakkeeseen.
Kiitoksia paljon avusta! miksi pitää luupata koodissasi???
no uuteen kyssäriin löytyy vastaus noista
http://keskustelu.suomi24.fi/search/s24search/(haejasiirrä OR etsijasiirrä) sort_name:"kunde"?sort=created&perpage=25&term_keywords=
eli haetaan tietoa ja jos palautuu nothing (ei löytynyt ) siirretään muuten skipataan
Keep EXCELing
@Kunde- jepuneula
En tiiä miks on luuppi, se ny vaan lähti tolleen toimimaan :)
Yritin tuota muokkaamalla saada toimimaan, kun mullakin tiedot on lihavoituna jo valmiiks.
http://keskustelu.suomi24.fi/node/9831473#comment-49219614
Mut ei kyllä taito näköjää riitä et osaisin muokata tuosta itselle toimivan systeemin.
Joten jos viitsit vielä sen verran jelpata.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
No Purra missäs ne työpaikat ovat?
Niinhän sinä väitit, että sinun puuhasi lisäävät 100 000 uutta työpaikkaa. Oliskohan jo aika myöntää että olet ollut vää3342133VOIKO MITÄÄN MIELIPUOLISEMPAA ENÄÄ EHDOTTAA?
NATO:n pääsihteeri Mark Rutte ja EU:n Kaja Kallas ehdottavat että euroopan maiden eläkevarat ja Terveydenhoito varat käy3241365MTV: Harvinainen haastattelu: Peltsi paljastaa Osmon elämästä julkkiksena: "Aika paljon tullut..."
Ihanat Peltsi ja Osmo . Tällä isällä ja pojalla on kyllä erityisen lämmin suhde. Isä ja poika kertovat väleistään ja pa91013- 68963
Sofiallako rakkaus rakoilee? Missä rillirakas?
Ukkeli taisi saada tarpeekseen Sofiasta ja lähti vaimon ja vauvan luo.186958Tiedän meidän molempien pitävän toisistamme
Siitä huolimatta näen tuhat eri vaihtoehtoa siitä, mikä menee pieleen yhteydenoton jälkeen. En kiusaa, härnää tai lupaa33945- 52914
Voi kun tietäisin mitä
Sinä olet. Ajattelen sinut hyvin helläksi ja välittäväksi. Siihen rakastuin. Mutta sitten se toinen puoli, miksi?51828- 110804
Kerro yksi positiivinen kokemus kaivatusta
Voi tunnistaa. Jos ei ole positiivista, voi kertoa negatiivisen. Ne ehkä jää mieleen paremmin.35746