Solun muotoilun tuominen soluviittaukseen Excelissä.

Liittynyt
12.03.2017
Viestejä
343
Hei! On tässä jo muutama päivä mennyt ongelman kanssa. Kysyin Microsoftin tuestakin, mutta siellä varmaan vastauksen saaminen kestää päivätolkulla.

Olisi kaksi kysymystä:

Tarkoituksena olisi luoda kaksi identtistä taulukkoa tulostussyistä.

1.
Taulukko 1: Täytettävä ja muokattava taulukko. Taulukossa käytetään monia erilaisia solun reunaviivoja, joilla on tekninen merkitys taulukon ymmärrettävyyden kannalta.

Taulukko 2: Puhdas tuloste erilaiseen muotoon ja paperikokoon. Taulukossa on kenttiä, joissa on vain suorat soluviittaukset Taulukon 1 soluihin. Näistä soluista pitäisi saada myös solun sisällön lisäksi muotoilu (reunaviivat) kopioitumaan automaattisesti Taulukkoon 2. Solujen muotoilun tulisi olla täysin vastaavat Taulukon 1 kanssa.

Esimerkki:
Taulukossa 1 solun A1 sisältö on "Puhelin 0501234567", ja solu on muotoiltu yläviivalla.
Taulukossa 1 solun A2 sisältö on "22.00-23.30" ja solu on muotoiltu alakatkoviivalla.

Nämä tiedot pitäisi saada soluviittauksella Taulukkoon kaksi, samoilla solumuotoiluilla.

2.
Olisi myös suotavaa saada osa solun sisäisestä informaatiosta suodattuvan pois. Eli jos taulukkoon yksi tulee joihinkin soluihin lisäys Xn (n=juokseva luku), niin tämän ei tarvitsisi kopioituvan toiseen taulukkoon muun informaation mukana.

Eli esimerkkinä:
Taulukon 1 solussa tieto "(Xn) 0,003 m/s".

Taulukkoon 2 soluun tulisi saada viittauksella vain "0,003 m/s"

Kiitos etukäteen.
 
1. Tietääkseni ainoa toimiva tapa jossa muotoilut saa ilman copy-paste tai erikseen tekemistä on VBA.
Täältä löytyy yksi esimerkki ja sekin tekee oikeasti kopion.


2. Onnistuu vain kaavoilla, tyyliin "jos arvo alkaa '(Xn) ' niin poistetaan se alusta" (substringillä tai vastaava).
Tai teet alkuperäisen taulukon 3 erillisellä solulla joissa on '(Xn)', arvo ja viimeisessä yksikkö. Tai kahdella jos arvo ja yksikkö pitää olla samassa (= ei ehkä paras muotoilujen kannalta)
 
Ei ole ihan ajan tasalla oma excel tietämys, mutta...

Eikös tuo koko taulukon kopoiminen uuteen taulukkoon kopio tuon solumuotoilun, sitten poistat kopioidun datan ja linkität solut lähde taulukon soluihin, ja muokkaat tarpeen mukaan ulkoasua. Juoksevan luvun pistäisin eri soluun, jonka voisi siinä toisessa taulussa piilottaa, jos linkittää ollenkaan.
 
Eikös tuo koko taulukon kopoiminen uuteen taulukkoon kopio tuon solumuotoilun, sitten poistat kopioidun datan ja linkität solut lähde taulukon soluihin, ja muokkaat tarpeen mukaan ulkoasua. Juoksevan luvun pistäisin eri soluun, jonka voisi siinä toisessa taulussa piilottaa, jos linkittää ollenkaan.

Justiinsa noin.

Kysymyksestä "Nämä tiedot pitäisi saada soluviittauksella Taulukkoon kaksi, samoilla solumuotoiluilla." saa kuitenkin sellaisen kuvan että myös muotoilujen muokkaukset pitäisi valua sinne toiseen taulukkoon ja sitä ei saa "helposti"...

Olen kyllä samaa mieltä että kopioimalla/tekemällä taulukot kuntoon ja data linkeillä syöttötaulukkoon. Jos muotoiluihin pitää koskea niin se on sitten oma homma eikä automaatti.
 
Kysymyksestä "Nämä tiedot pitäisi saada soluviittauksella Taulukkoon kaksi, samoilla solumuotoiluilla." saa kuitenkin sellaisen kuvan että myös muotoilujen muokkaukset pitäisi valua sinne toiseen taulukkoon ja sitä ei saa "helposti"...

Tämähän se on. Eli jos taulukkoon tulee muutostyö, niin se tarkoittaa silloin myös muotoilun muuttumista. Tämän tulisi tapahtua molempiin taulukkoihin automaattisesti.
 
Muuten ihan kiva, mut office kaatuu aina kun tekee tuon scriptin ja koittaa muokata solua A1 :D

Se onkin esimerkki josta saa idean miten toteutetaan.

"office kaatuu" tarkoittaa mitä ?
- excel- ikkuna häviää ruudusta ?
- makron suoritus päättyy virheeseen (mikä ilmoitus) v
- kaikki officeen liittyvät ohjelmat kaatuvat ?
- jotain muuta ?

Esimerkki vaatii että on "Sheet1"- niminen lehti. Jos ei ole niin kyllä se makro kaatuukin.

Suora copy-paste netistä ei yleensä toimi...
 
Se onkin esimerkki josta saa idean miten toteutetaan.

"office kaatuu" tarkoittaa mitä ?
- excel- ikkuna häviää ruudusta ?
- makron suoritus päättyy virheeseen (mikä ilmoitus) v
- kaikki officeen liittyvät ohjelmat kaatuvat ?
- jotain muuta ?

Esimerkki vaatii että on "Sheet1"- niminen lehti. Jos ei ole niin kyllä se makro kaatuukin.

Suora copy-paste netistä ei yleensä toimi...

Excel lopettaa vastaamisen. Ikkunaa ei enää voi hallinnoida, ja se pitää ajaa alas tehtävienhallinnassa.
Tämä ei tapahdu heti scriptin luonnissa, vaan silloin kun täyttää solua A1.


Muokkasin kakkos-sheetin nimeksi "Sheet1". Kokeilin myös puhtaalla taulukolla ja sama ongelma seurasi.
 
Excel lopettaa vastaamisen. Ikkunaa ei enää voi hallinnoida, ja se pitää ajaa alas tehtävienhallinnassa.
Tämä ei tapahdu heti scriptin luonnissa, vaan silloin kun täyttää solua A1.

Muokkasin kakkos-sheetin nimeksi "Sheet1". Kokeilin myös puhtaalla taulukolla ja sama ongelma seurasi.

Eikä tullut minkäänlaista virheilmoitusta missään vaiheessa ?

Itse saan tällaisen:
1594645740763.png


Tuosta kun valitsee end niin pääsee jatkamaan.

Pienellä kokeilulla pääsee pitkälle... kaikissa alla olevissa kohde on saman rivin E- sarake.

1. solun kopio toiseen kun arvoa muutetaan (Range.Copy(kohde) palauttaa jostain syystä virheen, siitä pääsee eroon error handlerilla ja kopio toimii silti):
Koodi:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error GoTo oops
    Target.Copy _
        Destination:=Worksheets("Sheet1").Range("E" & Target.Row)
    ' Tai            Target.Worksheet.Range( ... )
oops:
End Sub

2. Solun copy-paste toisella tavalla:
Koodi:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Mode = Application.CutCopyMode
    Application.CutCopyMode = False
    Target.Copy
    Cells(Target.Row, 5).Select
    ActiveSheet.Paste
    Target.Activate
    Application.CutCopyMode = Mode
End Sub

3. Pelkän muotoilun kopio:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Mode = Application.CutCopyMode
Application.CutCopyMode = False
Target.Copy
Cells(Target.Row, 5).PasteSpecial (xlPasteFormats)
Target.Activate
Application.CutCopyMode = Mode
End Sub

2. & 3. vaatii CutCopyMode:n asetuksen pois päältä, muuten valittu alue jää väärin.

Jos näitä käyttää oikeasti niin pelkän kopion sijaan pitää tarkastaa että lähde (siis parametri Target) on esimerkiksi sallittujen syöttöruutujen listalla tai vastaavaa eikä aina yritetä kopioda mitä tahansa solua.
Samoin lähteen perusteella pitäisi tietää minne se kopioidaan...
 

Statistiikka

Viestiketjuista
261 384
Viestejä
4 536 533
Jäsenet
74 793
Uusin jäsen
Sasu Heikkilä

Hinta.fi

Back
Ylös Bottom