# Returnera rader från annat arbetsblad om en cell matchar?



## tilly (Nov 13, 2007)

Här kommer ett problem som jag har funderat på en bra stund...

Då ett angivet värde i cell M4 i blad1 överensstämmer med någon cell i  kolumn H i blad2, hur får jag då fram alla rader ( 8 kolumner) där M4 finns?

Jag vill alltså att blad1 enbart ska innehålla de rader från blad2 där mitt värde i cell M4 matchar.

Väldigt tacksam för svar!


----------



## fairwinds (Nov 13, 2007)

Hej Tilly, välkommen!

Detta går att göra på flera sätt, t.ex med formler och med hjälp av filter.

Jag tror nog att det enklaste är att använda ett makro.

Den här koden kopierar de rader i kolumn A till H i Blad2, där kolumn H matchar M4 i Blad1, över till motsvarande kolumner i Blad1.

Testa och se om det funkar för dig eller om vi skall prova något annat.


```
Sub xxx()

Application.ScreenUpdating = False

    With Sheets("Blad2").Columns("A:H")
        .AutoFilter Field:=8, Criteria1:=Sheets("Blad1").Range("M4")
        .Copy Destination:=Sheets("Blad1").Range("A1")
        .AutoFilter
    End With
    
Application.ScreenUpdating = True

End Sub
```


----------



## Greg Truby (Nov 13, 2007)

Hiya Fairwinds, 

Question, would it be prudent to stick...
	
	
	
	
	
	



```
Sheets("Blad1").Columns("A:H").ClearContents
```
 at some point before the copy to make sure that - if this is not the first run of the macro - you do not end up with extra data at the bottom if the previous run had more rows matching the filter than the current run?

Regards,


----------



## tilly (Nov 13, 2007)

Tack för tipset!

Jag fick det att fungera till att börja med, men sen tyckte inte xl att makrot var säkert fast jag sänkte säkerhetsnivån osv.

Dessvärre har jag ingen erfarenhet av makron eller vb, så om du har något tips på hur man som du sa skulle kunna lösa det hela med hjälp av formler och filter vore det kanon!

Mvh


----------



## fairwinds (Nov 13, 2007)

Hi Greg!

As I'm copying the entire colums, I do not think it is needed right? (However it might be a better idea just coying the visible data?)


Tilly:

Jag har ingen aning om varför Excel varnar för makrot om den inte gör det från början. Skickar du filen till en annan dator med andra säkerhetsinställningar? Var placerade du koden föresten? Och vilket meddelande får du?

Hursomhelst här är ett alternativ med formler:

I2: =SMALL(IF(Blad2!$H$2:$H$100=$M$4,ROW(Blad2!$H$2:$H$100)),ROW()-ROW($I$1))
Som måste konfirmeras med Ctrl + Shift + Enter, inte bara med Enter innan den dras ner så långt som behövs. Denna kolumn kan du sedan dölja om du vill.

A2: =IF(ISNUMBER($I2),INDEX(Blad2!A:A,$I2),"")
Matas in normalt och drages sedan höger och ner så långt som behövs.


Om du har svensk version blir de två formlerna:

=MINSTA(OM(Blad2!$H$2:$H$100=$M$4;RAD(Blad2!$H$2:$H$100));RAD()-RAD($I$1))

respektive

=OM(ÄRTAL($I2);INDEX(Blad2!A:A;$I2);"")

Fungerar detta bättre?Book1ABCDEFGHI12a19a20a21a22a23a24a25243a28a29a30a31a32a33a34254a37a38a39a40a41a42a43265a46a47a48a49a50a51a52276a55a56a57a58a59a60a61287        #NUM!8        #NUM!Blad1


----------



## Greg Truby (Nov 14, 2007)

This is actually quite intriguing.  Excel is behaving much more intelligently than I would have though possible.   I filled Sheet2!A1:H12 with dummy data, H2:H4 = “Widgets” and A2:H4’s interior is cyan. H5:H12 = “Gadgets” and A5:H12’s color = orange.  A13:H50 is empty and color is yellow.    Start with Sheet1!M4 = “Gadgets and it copies only the header + orange cells.  Change Sheet1!M4 to “widgets” and it does wipe out everything – as if it is copying A2:H4,A13:H65535, but it does not pick up the empty yellow cells in A13:H50.    So it is restricting the paste to just those cells with data, but it’s _also_ wiping out the entire column beforehand.  Very interesting…. (to Tilly, sorry I can’t write this in Swedish).


----------



## tilly (Nov 14, 2007)

Till Fairwinds:

Det där fungerade hur fint som helst! Dessutom var det väldigt lättbegripligt för en som bara jobbat med formler och inte makron.
Stort tack för hjälpen!

Om man vidare ville snygga till det hela så att de celler i blad2 som är tomma inte returnerar '0' i motsvarande celler i blad1, kan man på något smidigt sätt kompletera formeln?

To Greg:
I do understand what you wrote, i just thought it harder to explain my problem in english. I see your point and agree that its quite interesting


----------



## fairwinds (Nov 14, 2007)

Tilly:

Kul att det funkar.  



> Om man vidare ville snygga till det hela så att de celler i blad2 som är tomma inte returnerar '0' i motsvarande celler i blad1, kan man på något smidigt sätt kompletera formeln?



Du Kan lägga till &"" i slutet på formeln ex:
=IF(ISNUMBER($I2),INDEX(Blad2!A:A,$I2),"")&"" 
så blir det inga nollor. Nackdelen är att om du har numeriska värden i din tabell så kommer de att betraktas som text och du kan t.ex. inte summera dem. Om de måste betraktas som nummer får du ta den lite längre varianten:
=IF(ISNUMBER($I2),IF(INDEX(Blad2!A:A,$I2)="","",INDEX(Blad2!A:A,$I2)),"")



Greg:
I don't think it is wiping out beforehand, it is just copying and pasting empty cells. The strangest thing in this case for me is that Tilly could use the macro at first, but then suddenly she could not because of XL security, even if she lower the security level


----------



## AndersE (Dec 5, 2007)

Från en nykomling i forumet.

Jag satt också och brottades med samma problem och gick ut på nätet för att se om någon hade en lösning.

Makrot fungerar utmärkt däremot fick jag problem med formelalternativet.

Jag har dock en följdfråga, jag skulle vilja utnyttja excel som en databas,
d v s i en kolumn har jag angett radens kategori via en söknyckel (totalt 6 olika). 
Hur skall jag göra för att kunna göra en utsökning på fler än en söknyckel?
Kan jag också välja vilka kolumner som skall presenteras efter utsökningen?

Jag har försökt med try-and-error men inte kommit någon vart.

hälsningar
Anders E


----------



## fairwinds (Dec 5, 2007)

Välkommen Anders!

Har du provad avancerat filter? (jag tror det heter så på svenska, det heter Advanced filter på engelska och du hittar det under Data menyn)

Om du inte använt det tidigare, kolla i hjälpfilen som beskriver ganska väl hur du skall göra. Du kan använda flera söknycklar som kriteria och få resultatet kopierat till valfri plats.


----------



## tilly (Nov 13, 2007)

Här kommer ett problem som jag har funderat på en bra stund...

Då ett angivet värde i cell M4 i blad1 överensstämmer med någon cell i  kolumn H i blad2, hur får jag då fram alla rader ( 8 kolumner) där M4 finns?

Jag vill alltså att blad1 enbart ska innehålla de rader från blad2 där mitt värde i cell M4 matchar.

Väldigt tacksam för svar!


----------



## AndersE (Dec 20, 2007)

Hej !

Tack för ett snabbt svar !

Tyvärr kunde jag inte testa förslaget lika snabbt, men efter att nu ha
testat lite olika varianter av bearbetning kan jag bara konstatera att
det löste mitt problem.

Ett stort tack igen 

Anders E


----------



## greymane (Jun 18, 2008)

Lånar en gammal tråd här 

jag försöker med 

```
=MINSTA(OM(Blad2!$H$2:$H$100=$M$4;RAD(Blad2!$H$2:$H$100));RAD()-RAD($I$1))


=OM(ÄRTAL($I2);INDEX(Blad2!A:A;$I2);"")
```

men jag får #Ogiltigt när jag drar ner den översta formeln. Vad gör jag för fel?

min kod ser ut såhär:


```
=MINSTA(OM(Blad3!$A$2:$A$23=Blad1!$C$3;RAD(Blad3!$A$2:$A$23));RAD()-RAD(Blad2!$K$1))
```

Alltså sökkriteriet finns i blad1, rådata i blad3 och valda rader kopieras till blad2

någon vis som kan upplysa mig?


----------



## fairwinds (Jun 18, 2008)

Hej och välkommen!

Formeln i fråga är en matrisformel. Den måste konfirmeras med Ctrl + Shift + Enter.

När du skrivit in formeln sätt markören i formelfältet (inte i cellen utan i fältet där uppe) och trycker Ctrl + Shift + Enter samtidigt. Om du gjort på rätt sätt kommer formeln nu att omslutas av {...}. Du kan nu dra ner formeln.


MVH


----------



## greymane (Jun 18, 2008)

OK, ja nu funkar det. Det blir fortfarande #OGILTIGT efter sista "träffen", men det gör ju inte så mycket. ingen ska ju se den kolumnen ändå.

Fast det dök upp en annan grej. Jag skulle behöva två sökkriterier - produktnamn och leverantör. Hur får jag till det? Jag är inte så händig med matriser känner jag..


----------



## fairwinds (Jun 19, 2008)

Hej igen!

Du kan göra så här:

=MINSTA(OM((Blad3!$A$2:$A$23=Blad1!$C$3)*(Blad3!$A$2:$A$23=Blad1!$C$3);RAD(Blad3!$A$2:$A$23));RAD()-RAD(Blad2!$K$1))

Byt ut det röda mot ditt andra sökkriteria.


----------



## greymane (Jun 19, 2008)

Det låter ju smidigt! (har inte fått det att funka än, men det löser sig snart  )

Finns det någon bra webbresurs för sånna här trix? Den inbygda hjälpen har inte gjort mig nån större nytta hitintills iaf..


----------



## fairwinds (Jun 19, 2008)

Den bästa webresursen har du faktiskt hittat. Det är här. Det finns också en massa bra länkar här:

http://www.mrexcel.com/forum/showthread.php?t=126629



Glad Midsommar!


----------

