Suuri Word, Excel & Access -thread

  • Keskustelun aloittaja Keskustelun aloittaja jarhu
  • Aloitettu Aloitettu
Pitäisi tehdä Excelissä makro. Kahdella välilehdellä on molemmilla lista. Molemmat pitää kopioida kolmannelle välilehdelle peräkkäin ja niiden summa tulee laskea heti siihen alle. Tässä ei ole mitään ihmeellistä vaan ongelmana on se, että listojen pituus pitää olla vaihdeltavissa. Eli jos jommalle kummalle välilehdelle jolla alkuperäiset tiedot ovat, lisätään yksi tai useampi rivi ja ajetaan raportti (makro) uudestaan, niin raportissa kaikki rivit näkyvät ja ovat yhdessä pötkössä ja summa lasketaan oikein.

Muuten olen saanut makron toimimaan, mutta summan laskentaa en saa kuntoon. Kun makron koodia katsoo, niin summan laskennassa ilmoitetaan laskettava alue suhteessa siihen soluun, jossa laskentakaava on.

Eli kysymys on se, miten summan laskennan saisi toimimaan niin, että se laskee tietyltä riviltä alaspäin kaikki rivit yhteen siihen soluun asti, jossa kaava on? Kokeilin nauhoitta AutoSum-toiminnon, mutta se tekee VB-koodista silti samanlaisen kiinteän.
Teet sinne koodiin esim. for lauseen, joka käy listan läpi solu solulta ja summaa soluja rekursiivisesti kunnes listan loppu tulee vastaan. VB:n helpeistä löytyy apua hakusanalla "For...Next Statement".

Koodi:
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]

Next [counter]
 
10% ALENNUS KOODILLA PAKKOTOISTO
Male, onko ongelma jo ratkaistu vai olisiko tästä lisäapua?

Sub Painike1_Napsauta()
'
' Painike1_Napsauta Makro
'

'
Range("A1:A2000").Select
Selection.ClearContents
Sheets("Taul1").Select
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
Selection.Copy
Sheets("Taul3").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Taul2").Select
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Taul3").Select
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select

Dim LastRow As Long
LastRow = Range("A65536").End(xlUp).Row + 1
Cells(LastRow, 1).Formula = "=SUM(A1:A" & LastRow - 1 & ")"

End Sub

Alun purkkaviritelmän voit unohtaa... Eli viimeiset rivit kiinnostanee sinua, jos olet saanut alun pelittämään?
 
Moi kaikki,

onnistuuko Word 2007:ssä juoksevan ja automaattisesti päivittyvän numeroinnin sisällyttäminen tekstiin? Mulla on siis dokumentissa n. 50 kuvaa jotka on numeroitu kuvateksteillä 1, 2 jne.. Nyt jos lisään dokumentin alkuun kuvan niin joudun itse vaihtamaan loppujen kuvateksteihin +1 :(
 
Moi kaikki,

onnistuuko Word 2007:ssä juoksevan ja automaattisesti päivittyvän numeroinnin sisällyttäminen tekstiin? Mulla on siis dokumentissa n. 50 kuvaa jotka on numeroitu kuvateksteillä 1, 2 jne.. Nyt jos lisään dokumentin alkuun kuvan niin joudun itse vaihtamaan loppujen kuvateksteihin +1 :(
Kuviin saa juoksevan numeroinnin kun klikkaa kuvasta hiiren oikealla "Insert Caption". Sitten tekstiin voi lisätä linkin kuvan numeroon "Insert Crossreference"- kohdasta. Löytyy jostain valikoista. Olisivatko suomeksi jotain "Lisää kuvateksti" ja "Lisää viittaus" tms.?

edit. Tarttee näemmä valita koko teksti ja klikata "Päivitä kentät", jos kuvien numerointi on muuttunut. Ei näemmä päivitä numeroita tekstiin automaattisesti.
 
Näyttää tuo kuvien numerointi nyt toimivan niinkuin pitääkin. Myöhemmät kuvatkin muuttavat numerointia automaattisesti ilman kenttien päivittämistä. Kiitoksia!
 
On kirjoitelma, jossa kansilehti, sisällysluettelo ja sitten varsinainen teksti. Sivumerointi pitäisi alkaa varsinaisen tekstin ensimmäiseltä sivulta eli kansilehti on "erilainen 1.sivu", mutta jostain syystä en saa sivunumerointia alkamaan sisällysluettelosta numerolla 0. Herjaa alla olevaa:

Voisko joku sanoa mitä vittua tuo nyt tarkoittaa? :nolo: Ja minä kun luulin osaavani Wordin kuin omat taskuni..
 

Liitteet

  • sivunumerointi..jpg
    sivunumerointi..jpg
    46,5 KB · Katsottu: 569
On kirjoitelma, jossa kansilehti, sisällysluettelo ja sitten varsinainen teksti. Sivumerointi pitäisi alkaa varsinaisen tekstin ensimmäiseltä sivulta eli kansilehti on "erilainen 1.sivu", mutta jostain syystä en saa sivunumerointia alkamaan sisällysluettelosta numerolla 0. Herjaa alla olevaa:

Voisko joku sanoa mitä vittua tuo nyt tarkoittaa? :nolo: Ja minä kun luulin osaavani Wordin kuin omat taskuni..

ei mtn enää. Löysinkin jo ongelman ytimen osittelusta..
 
Access hieman heikommin hallussa ja nyt tarttis pikaisesti apua.

2 Excel-taulua mitkä olen siirtänyt Accesiin omiksi tauluikseen. Yhteys taulujen välille luotu. Tarkoitus olisi nyt yhdistää kyselyn avulla nämä yhdeksi siten, että tauluissa esiintyvät hlöt näkyvät vain yhtenä.

Eli esimerkiksi 1. excelissä on etunimeni, sukunimeni sekä yritykseni ja 2.excelissä sitten yritykseni osoitetiedot. Ja nämä haluaisin oikeille paikoilleen yhteen tauluun kyselyn avulla. Tajuaako joku mitä tarkoitan?

Jostain syystä en nyt saa tätä pelittämään.
 
Oletan, että sulla on taulut:

Henkilö tms.
Etunimi
Sukunimi
Yritys (perusavain)

Osoite tms.
Yritys (viiteavain)
Osoite
Fax
Puh..

Ja kyselyn rakennenäkymässä on molemmat taulukot valittu ja yhteys yhteysviivalla muodostettu? Hakusarakkeisiin kaikki kentät valittu ja ruksit niissä Näytä-kohdassa?
 
Oletan, että sulla on taulut:

Henkilö tms.
Etunimi
Sukunimi
Yritys (perusavain)

Osoite tms.
Yritys (viiteavain)
Osoite
Fax
Puh..

Ja kyselyn rakennenäkymässä on molemmat taulukot valittu ja yhteys yhteysviivalla muodostettu? Hakusarakkeisiin kaikki kentät valittu ja ruksit niissä Näytä-kohdassa?

No tuossa se virhe onkin.

Eli tulee valitusta kaksoisarvoista jne jos henkilö-taulun pääavain on Yritys ja osoite-taulun viiteavain yritys.

Huomaa kyllä, että joku ei ole käyttänyt pitkään aikaan Accesia...:D
 
^Miun mielestä Henkilötaulun perusavain pitäisi olla esim sossunro tai henkilönumero (uniikki).
Yrityksen nimi voi olla yritystaulun perusavain.
Sitten vain :
SELECT Henkilö.Etunimi, Henkilö.Sukunimi, Henkilö.Yritys, Yritys.*
FROM Henkilö LEFT JOIN Yritys ON Henkilö.Yritys = Yritys.Tunniste;
 
^Miun mielestä Henkilötaulun perusavain pitäisi olla esim sossunro tai henkilönumero (uniikki).
Yrityksen nimi voi olla yritystaulun perusavain.
Sitten vain :
SELECT Henkilö.Etunimi, Henkilö.Sukunimi, Henkilö.Yritys, Yritys.*
FROM Henkilö LEFT JOIN Yritys ON Henkilö.Yritys = Yritys.Tunniste;

Kyllä tuo varmaan ilman Sql pitäisi myös mennä?
 
Jos sulla on 2 taulua ja haluat ne yhdistää niin niistä pitää löytyä yhteinen tekijä, jotta niiden välille voi luoda yhteyden.
 
Taulu 1:

-ID
-sukunimi
-etunimi
-yrityksen nimi

Annoin Accesin lisätä Excelistä tuonnin yhteydessä perusavaimen itse. Eli ID.

Taulu 2:

-yrityksen nimi
-katuosoite
-postinumero
-kaupunki

Tässä valitsin perusavaimeksi yrityksen nimen. Pitäisikö nuo indeksoida ohjatun laskentataulukon luomisen yhteydessä jotenkin? Nyt niitä en ole indeksoinut itse.

Yhteysikkunassa vedin yhteyden taulu 1 ID:stä taulu 2:sen yrityksen nimeen. Valitsin säilytä viite-eheysarvot. ID:n tietotyyppinä on luku.Tulee ilmoitus: Yhteydessä on oltava sama määrä kenttiä ja kenttien tietotyyppien on vastattava toisiaan. Jos nyt muuttaisin tietotyypin tekstiksi, tulisi ilmoitus viite-eheyssääntöjen rikkomisesta.

Voisko joku nyt laitella jtn pientä ohjetta/vinkkiä miten toi menis nopeasti kuntoon. Tässä olis vähän työhommiakin tehtävänä.. :)
 

Latest posts

Suositut

Back
Ylös Bottom