Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1990


På bildet over har jeg skissert hva jeg ønsker å oppnå i Excel:

Hvis A2 = 1 skal C2 hente ut verdien fra B2. (Det klarer jeg selv. ) Men:
Hvis A3 = 2 skal C3 hente ut verdien fra B2. Og:
Hvis A4 = 3 skal C4 hente ut verdien fra B2, osv.

Hvis A-kolonnen har verdi under 1 (blank) skal den bare hente ut B-en fra samme linje.

Utfordringen er å få til én formel som kan repeteres nedover C-kolonnen, som forstår hva den skal hente ut fra hvor, som jeg ikke trenger å redigere for hver eneste linje.

Det burde vel være mulig med en formel som trekker fra verdien til A-kolonna slik at C-kolonna henter ut den riktige cella? Altså at hvis det er celle A4 som prøves, så trekker den fra 3 = A1? Hvis det lar seg gjøre i det hele tatt.

Jeg er ikke rå på hverken matematikk eller programmering, så håper noen kan hjelpe meg, og at jeg klarer å forklare hva jeg ønsker.
Sist endret av Viva la Opium; 15. juni 2016 kl. 11:05.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Cellereferanser er relative i Excel. Det vil si at hvis celle A2 refererer til A1 og formelen kopieres til B4, kommer den der til å referere til B3.
Der du faktisk trenger å referere til en fast rad, fast kolonne eller fast celle, kan du prefikse den aktuelle delen som skal være absolutt med $.

Dvs; hvis celle A2 refererer til $A1 og kopieres til B4, vil denne nå referere til A3 i stedet for B3. Hvis den refererer til A$1, blir ny referanse B1. Hvis den refererer til $A$1, blir ny referanse A1 uansett hvor du kopierer den.

http://i.imgur.com/G4orRj8.png
Sist endret av robhol; 15. juni 2016 kl. 11:19. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
jamen yolo da.
Viva la Opium's Avatar
Trådstarter
Det løser litt av problemet, men ikke alt. Har laget en fil med formlene jeg har til nå her.



Problemet er å få til å bruke én kopierbar formel i C-kolonna, det overstående får jeg til hvis jeg redigerer hvert eneste tilfelle av en 1 i A-kolonna, for så å kopiere denne på hver rekke, noe som blir tungvint når det er over 2000 oppføringer.

Om det hadde gått an å bruke cellereferansen og celleverdien om hverandre kunne man jo brukt en enkel formel:
Hvis verdien av A er 1 eller mindre = Hent ut B, eller:
Hvis verdien av A er 1 eller mer = B14 (cellereferansen) - A14 (celleverdien) + 1 (så det blir riktig) = Hent ut B13.
(Altså B14-2+1=B13).
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Formel for C2: =INDIRECT(ADDRESS(ROW(C2) - IF(A1>1;A1-1;0); COLUMN($B$1) ))

Jeg oppdaterer med forklaring når jeg har bedre tid.
Jeg er ingen ekspert i excel programmering, men programmering er logisk, så jeg har gjort et forsøk på å løse denne oppgaven for deg.

Formellen i C kolonnen:

Kode

=IF(A2=MOD(ROW( ) - 2, 3) + 1, INDIRECT ( "B"&ROW () - MOD(ROW() +  1, 3) ) , "" )
Resultat:

Klikk her for direkte link til bilde
Hei

Hvis jeg forstod problemstillingen din så kan dette løses ganske enkelt ved å navnsette B2 til hva enn du vil ved å høyreklikke på cellen og velge "navngi et område". Vet ikke hva dette blir på engelsk. Deretter kan du bare referere til til denne cellen med følgende formel: =HVIS(A1>=1;Test;B1) og kopiere nedover (Jeg har her valgt Test som navn på B1). Eventuelt burde det også fungere med =HVIS(A1>=1;$B$1;B1)

resultat:
Se vedlegg
jamen yolo da.
Viva la Opium's Avatar
Trådstarter
robhol sin løsning funker fjell. 0xFF sin løsning får jeg ikke til å funke (får feilmelding om at jeg har får få argumenter, kan være pga. jeg bruker Excel for Mac 2011), mens Insert name sin løsning blir feil. Jeg ønsker ikke å repetere den første 1-eren alle steder det er en 1, men den første 1-eren for hver nye rekke med tall. Dårlig forklart, og jeg ser jo nå at det siste bildet mitt viser feil også, så løsningen er jo delvis riktig.

Bildet under viser hva jeg ønsket å oppnå, og som faktisk skjer med robhols strålende formel:

NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Hurra!
Forklaringen på formelen er som følger. Merk at den i forrige post inneholder en liten off by one-feil ettersom jeg designet den til å begynne på C1 og ikke C2, og ble litt stresset under konvertering da jeg måtte rekke noe.

=INDIRECT(ADDRESS( ROW(C2) - IF(A2>1;A2-1;0); COLUMN($B$1) ))

INDIRECT returnerer verdien i cellen angitt av ADDRESS.
ADDRESS tar en rad og en kolonne, og returnerer en "statisk" referanse (eg. $A$1)
- kolonnen gis av COLUMN($B$1) for å gi en statisk referanse til B, som alltid er der vi ønsker å hente verdien fra.
- raden gis av det noe mer komplekse uttrykket ROW(C2) - IF(A2 > 1; A2 - 1; 0)

Her er C2 nåværende celle, A2 tilsvarende celle fra A-kolonnen.
Vi utnytter at A-kolonnen består av løpenumre og tomme felt, dvs at den nedover består av tallsekvenser som begynner på 1 og stiger med 1 for hver rad. Hvis vi tar tallet fra en vilkårlig A-celle der dette er 1 eller mer og trekker dette fra den nåværende raden, vil vi få raden direkte over den som inneholder nærmeste 1 i A-kolonnen og hvis B-verdi vi ønsker å hente ut.

For å se grundigere på selve uttrykket:

ROW(C2) - IF( A2 > 1; A2 - 1; 0)

ROW(C2) gir oss nåværende rad. Deretter sjekker vi om A2 er større enn 1 (og implisitt at det faktisk er et tall...). Hvis det er det, trekker vi fra (A2 - 1), slik at vi går riktig antall rader oppover. Ellers trekker vi fra 0 og holder oss på nåværende rad.

Dette mates nå inn i ADDRESS-funksjonen og så INDIRECT. Excel slår opp verdi fra B-cellen i ønsket rad.