Moi,
Ytimekäs otsikkoni ei vielä paljasta mitä lopulta haluan, mutta tässä tarkemmin esimerkin valossa.
B -sarakkeessa on 36 nimeä riveillä 1-36.
A-sarakkeessa on jokaisen nimen kohdalla jokin arvo, vaikka väliltä 0-100.
Jokaisella nimellä on tarkastelualue rivin solut C-Z.
Tässä lähtöasetelma.
Ajatuksena olisi ainoastaan pienentää A-sarakkeen lukua hiirtä klikkaamalla soluissa välillä C-Z siten, että soluun jäisi X-kirjain, eikä X-kirjaimen poistaminen (joskus) -palauttaisi arvoa enää isommaksi.
Soluihin C-Z täytyy voida kirjoittaa haluttaessa muitakin kirjaimia, mutta VAIN X-kirjain pienentäisi A-sarakkeen lukua yhdellä.
Tarkennuksena siis, että jokainen rivin X-kirjain pienentää A-sarakkeen solun lukua.
Lisäksi A-sarakkeen lukua pitää voida muuttaa isommaksi tai pienemmäksi niin haluttaessa, eli lukua lähdetään aina pienentämään sen hetkisestä arvosta mikä siinä sillä hetkellä on, paisti jos arvo on 0 (nolla).
Luonnistuisiko tällainen kaavarivillä tai VB:llä?
Luvun pienentäminen solussa
12
72
Vastaukset
- Anonyymi
VB:llä hyvin luultavasti onnistuu. En ole täysin varma, ettei sille ole jotain estettä, mutta ohjelmointikielihän se on, joten äkkiseltään sanoisin, että mikä ettei.
Kaavarivillä tuskin ihan tuollaisenaan onnistuu. Jotain samantapaista kyllä, mutta ainakin se, että solun arvo muuttuu sekä syöttämällä että kaavan avulla, on aika tekemätön paikka. Kun syötät A-sarakkeeseen uuden arvon, se ei vain muuta solun arvoa, vaan korvaa solun kaavan.- Anonyymi
Tuota itsekin arvelin, ettei A-sarakkeen arvoa voi ainakaan suoraan lähteä muokkaamaan, ainakaan jos se sisältää kaavan. En tiedä onnistuisiko tämä lainkaan kkaavalla.
Mutta nyt näyttääkin Kunde alempana ratkaisseen asian VB:llä.
Kiitos silti pähkäilystäsi!
ko taulukon moduuliin...
nyt tuplaklikkaamalla solua alueella lisää soluun X ja pienentää vastaavan solun rivin A sarakkeen arvoa -1 ja jos nolla ei tee mitään.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("C1:Z36"), Target) Is Nothing Then
Target = "X"
If Range("A" & Target.Row) = 0 Then
Else
Range("A" & Target.Row) = Range("A" & Target.Row) - 1
Target.Offset(0, 1).Select
End If
End If
End Subsori tämäkoodi piti postata...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("C1:Z36"), Target) Is Nothing Then
If Target = "X" Then
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
Target = "X"
If Range("A" & Target.Row) <= 0 Then
Range("A" & Target.Row) = 0
Else
Range("A" & Target.Row) = Range("A" & Target.Row) - 1
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
End If
End If
End If
End Sub
Keep EXCELing
@Kunde- Anonyymi
kunde kirjoitti:
sori tämäkoodi piti postata...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("C1:Z36"), Target) Is Nothing Then
If Target = "X" Then
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
Target = "X"
If Range("A" & Target.Row) <= 0 Then
Range("A" & Target.Row) = 0
Else
Range("A" & Target.Row) = Range("A" & Target.Row) - 1
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
End If
End If
End If
End Sub
Keep EXCELing
@KundeKiitos Kunde, tämä näyttäisi ns. soivalta peliltä.
Esitin asiani esimerkin valossa, kuten kirjoitinkin. Nyt kun käsissäni on toimiva koodi, yritän sovittaa sen jo käytössä olevaan versiooni.
Mahdollisissa ongelmissa käännyn mielelläni puoleesi.
Virittelyni siirtyy varmaan kyllä ensi viikolle, mutta palataan tarvittaessa asiaan.
Kiitos vielä kovasti nopeasta reagoinnistasi! :) - Anonyymi
Anonyymi kirjoitti:
Kiitos Kunde, tämä näyttäisi ns. soivalta peliltä.
Esitin asiani esimerkin valossa, kuten kirjoitinkin. Nyt kun käsissäni on toimiva koodi, yritän sovittaa sen jo käytössä olevaan versiooni.
Mahdollisissa ongelmissa käännyn mielelläni puoleesi.
Virittelyni siirtyy varmaan kyllä ensi viikolle, mutta palataan tarvittaessa asiaan.
Kiitos vielä kovasti nopeasta reagoinnistasi! :)Moi Kunde. Päätinkin kokeilla koodiasi heti ja mieleeni tuli seuraavaa.
Tässä nykyisessä versiossahan tuo X-kirjain pienentää A-sarakkeen solun arvoa yhdellä.
Olisiko iso muutos jos X-kirjaimen poistamisen jälkeen se palauttaisikin arvon entiselleen?
Ajatus muutokselle lähti siitä, että nuo X-kirjaimet periaatteessa jäävät yleensä aina paikalleen, mutta joskus tulee tilanne, että se täytyykin poistaa ja arvo saisi palautua sillä yhdellä silloin. Soluun muiden kirjainten kirjoittaminen saisi olla silti voimassa edelleen, vaikka X-kirjain poistettaisiinkin.
Toinen muutos mikä tuli mieleen, voisiko koodiasi muuttaa siten, että se vaikuttaisikin vain joka toisella rivillä, eli nyt se vaikuttaa joka rivillä 1-36, kun se voisikin selvyyden vuoksi vaikuttaa vain joka toisella rivillä, eli 1, 3, 5, 7....... 35.
Tämä muutos olisi tervetullut. :)) Anonyymi kirjoitti:
Moi Kunde. Päätinkin kokeilla koodiasi heti ja mieleeni tuli seuraavaa.
Tässä nykyisessä versiossahan tuo X-kirjain pienentää A-sarakkeen solun arvoa yhdellä.
Olisiko iso muutos jos X-kirjaimen poistamisen jälkeen se palauttaisikin arvon entiselleen?
Ajatus muutokselle lähti siitä, että nuo X-kirjaimet periaatteessa jäävät yleensä aina paikalleen, mutta joskus tulee tilanne, että se täytyykin poistaa ja arvo saisi palautua sillä yhdellä silloin. Soluun muiden kirjainten kirjoittaminen saisi olla silti voimassa edelleen, vaikka X-kirjain poistettaisiinkin.
Toinen muutos mikä tuli mieleen, voisiko koodiasi muuttaa siten, että se vaikuttaisikin vain joka toisella rivillä, eli nyt se vaikuttaa joka rivillä 1-36, kun se voisikin selvyyden vuoksi vaikuttaa vain joka toisella rivillä, eli 1, 3, 5, 7....... 35.
Tämä muutos olisi tervetullut. :))Lisäsin koodiin vielä semmoisen, että jos A -sarakkeen luku on jo 0, niin ei voi lisätä X kirjainta- jos ei hyvälisäys, niin poistetaan sitten...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("C1:Z36"), Target) Is Nothing Then
If Target.Row Mod 2 = 1 Then
If Target = "X" Then
Target = ""
Range("A" & Target.Row) = Range("A" & Target.Row) 1
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
If Range("A" & Target.Row) <= 0 Then
Range("A" & Target.Row) = 0
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
Range("A" & Target.Row) = Range("A" & Target.Row) - 1
Target = "X"
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
End If
End If
End If
End If
End Sub
Keep EXCELing
@Kunde- Anonyymi
kunde kirjoitti:
Lisäsin koodiin vielä semmoisen, että jos A -sarakkeen luku on jo 0, niin ei voi lisätä X kirjainta- jos ei hyvälisäys, niin poistetaan sitten...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("C1:Z36"), Target) Is Nothing Then
If Target.Row Mod 2 = 1 Then
If Target = "X" Then
Target = ""
Range("A" & Target.Row) = Range("A" & Target.Row) 1
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
If Range("A" & Target.Row) <= 0 Then
Range("A" & Target.Row) = 0
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
Else
Range("A" & Target.Row) = Range("A" & Target.Row) - 1
Target = "X"
If Target.Column = 25 Then
Target.Offset(1, 0).Select
Else
Target.Offset(0, 1).Select
End If
End If
End If
End If
End If
End Sub
Keep EXCELing
@KundeKunde, laitoinkin aiheesta spostia sulle!
- Anonyymi
Näinhän se parempi toimisto-ohjelma asentuu vaikeasti komentamalla ;-).
(täällä kerran winhiihuli vai kuka se oli, niin valitti sudotuksesta, joten...:
apt update
sudo !!
apt upgrade
sudo !!
apt search libreoffice
apt install libreoffice
sudo !!
xxx
$ e
Keskeyt ä.............
.- Anonyymi
Mitäs tehdään, kun heti tuli:
bash: apt: komentoa ei löydy
- - Anonyymi
Niin... Miksipä ihmeessä kukaan haluaisi käyttää hyvin optimoitua ammattilaisten tekemää kaupallista ohjelmistoa, kun voi yhtä hyvin käyttää huonosti optimoitua harrastelijoiden vapaaehtoisprojektina tekemää ilmaiskopiota samasta tuotteesta.
- Anonyymi
Moi,
Aiheen aloittajana ilmoitan, että sain ratkaisun esittämääni ongelmaan! Kiitos kaikille ratkaisuja esittäneille ja erityisesti Kundelle, joka väänsi homman toimimaan VB-koodilla -joka saikin matkan varrella lisää uusia ulottuvuuksia.
-aiheen aloittaja
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Kiitos nainen
Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik124070MTV: Kirkossa saarnan pitänyt Jyrki 69 koki yllätyksen - Paljastaa: "Se mikä oli hyvin erikoista..."
Jyrki Linnankivi alias Jyrki 69 on rokkari ja kirkonmies. Teologiaa opiskeleva Linnankivi piti elämänsä ensimmäisen saar822091Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?
Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun5501658Kirjoita yhdellä sanalla
Joku meihin liittyvä asia, mitä muut ei tiedä. Sen jälkeen laitan sulle wappiviestin991395Olet hyvin erilainen
Herkempi, ajattelevaisempi. Toisaalta taas hyvin varma siitä mitä haluat. Et anna yhtään periksi. Osaat myös ilkeillä ja671117Yksi syy nainen miksi sinusta pidän
on se, että tykkään luomusta. Olet luonnollinen, ihana ja kaunis. Ja luonne, no, en ole tavannut vielä sellaista, joka s331048Hyödyt Suomelle???
Haluaisin asettaa teille palstalla kirjoittelevat Venäjää puolustelevat ja muut "asiantuntijat" yhden kysymyksen pohditt216943Hyvää Joulua mies!
Toivottavasti kaikki on hyvin siellä. Anteeksi että olen hieman lisännyt taakkaasi ymmärtämättä kunnolla tilannettasi, o60893- 171864
Paljastavat kuvat Selviytyjät Suomi kulisseista - 1 päivä vs 36 päivää viidakossa - Katso tästä!
Ohhoh! Yli kuukausi viidakossa voi muuttaa ulkonäköä perusarkeen aika rajusti. Kuka mielestäsi muuttui eniten: Mia Mill3838