Avatar billede claus_b. Novice
29. december 2010 - 20:01 Der er 7 kommentarer og
1 løsning

Funktion: fjerne tomme felter i liste

hejsa,

i kolonnen A er angivet "1" eller "".
I kolonne B er angivet en række parametre som fx. æbler, pærer, banan.
Kolonne C skal så gerne vise kolonne B's værdier såfremt værdien i samme række i kolonne A er 1.

Tricket er så, at kolonne C ikke må have nogle tomme rækker.

Eksempel:
A B    C
1 æbler æbler
  banan pærer
1 pærer


Jeg har fundet lidt kode på engelsk og har oversat den til dansk(har dansk værsion af excel) men det virker ikke rigtigt.
Måske kan det hjælpe alligevel:
(Idéen med koden er at fjerne tomme felter i B, men jeg skulle gerne have ændret den til ovennævnte funktion)

=IF(ROW()-ROW(NoBlanksRange)+1>ROWS(BlanksRange)-
COUNTBLANK(BlanksRange),"",INDIRECT(ADDRESS(SMALL(
(IF(BlanksRange<>"",ROW(BlanksRange),ROW()+ROWS(BlanksRange))),
ROW()-ROW(NoBlanksRange)+1),COLUMN(BlanksRange),4)))

På forhånd tak
Avatar billede anlu Nybegynder
29. december 2010 - 22:28 #1
Jeg tænker om du kan leve med at have en ekstra kolonne (som du evt. kan skjule), der er blank hvis A er blank ellers summen af værdierne i kolonne A indtil den pågældende række (dvs. den faktisk er en tæller på dine 1-taller). Hvis du skubber sådan en ind mellem kolonne A og B, kan du lave den kolonne der samler værdierne med en LOPSLAG på RÆKKE.

Håber det er til at forstå? Ellers skal jeg nok uddybe, hvis du altså ikke har noget imod at have en ekstra kolonne.
Avatar billede claus_b. Novice
30. december 2010 - 01:11 #2
god idé - jeg har intet imod en ekstra kolonne.

fik det faktisk til at fungere med to støttekolonner:
A  B  C      D        E
0      prøve 1    prøve 2    1
1  1  prøve 2    prøve 3    2
2  1  prøve 3            3
2      prøve 4          4
(sorry, kan ikke få det til at stå som i en tabel)

A: kummulerer B
D: fra C, hvor B er 1
E: Rækkenummer

D er kodet med:
=HVIS(ER.FEJL(LOPSLAG(E1;A$1:C$12;3;FALSK));"";LOPSLAG(E1;A$1:C$12;3;FALSK))

det kan sikkert laves smartere, men det fungerer lige efter hensigten :-)

mange tak
Avatar billede excelent Ekspert
30. december 2010 - 10:53 #3
=INDEKS($B$1:$B$20;MINDSTE(HVIS($A$1:$A$20=1;RÆKKE($A$1:$A$20));RÆKKE(1:1)))

Formlen er en matrix-formel som afsluttes med ctrl+shift+enter
Avatar billede anlu Nybegynder
30. december 2010 - 11:50 #4
Super-elegant løsning, Excelent! Og så lærte jeg også en ny funktion at kende i dag - jeg har aldrig brugt MINDSTE/SMALL-funktionen før :o)
Avatar billede excelent Ekspert
30. december 2010 - 12:59 #5
takker :-) ja vi kan alle lære noget nyt
=INDEX($B$1:$B$20;SMALL(IF($A$1:$A$20=1;ROW($A$1:$A$20));ROW(1:1)))
Avatar billede claus_b. Novice
31. december 2010 - 12:05 #6
hmm... jeg kan nu ikke helt få excelent's forslag til at virke - giver kun den første værdi, der har et 1-tal - skal der laves om på funktionen for hver af cellerne, hvor resultatlisten skal være - eller skal funktionen kun stå i den øverste celle, hvor listen skal være?

Anyway, så har jeg fået løst problemet så hvis anlu svarer, sender jeg nogle point :-)
Avatar billede anlu Nybegynder
31. december 2010 - 15:44 #7
Excelents løsning går på din oprindelige problemstilling, dvs. kollone A og B er dine oprindelige A og B. Og du skal huske at trykke Ctrl+Shift+Enter, i stedet for bare Enter når du afslutter formlen.

Jeg lægger hermed et svar som du beder om - men giver gerne afkald på alle pointene til Excelent - da jeg synes det er en lækker løsning han har givet. Omvendt er den løsning du selv har lavet muligvis lettere at forstå for de fleste :o)
Avatar billede claus_b. Novice
03. januar 2011 - 21:12 #8
jeg forstår - huskede at trykke Ctrl+Shift+Enter, men kunne desværre ikke få det til at virke..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester