Jump to content

Excel-hjälp


APC-mannen

Recommended Posts

Har fått bra hjälp med Excel hör förut, så jag kör igen och hoppas på det bästa:

 

excelproblemtu9.th.jpg

 

Jag har ett Excel-ark med 43000+ rader. Fenomenet enligt bilden återkommer genom hela arket. De tomma cellerna måste jag få ifyllda automatiskt på något sätt enligt den rödmarkerade texten. Finns det något sätt att får Excel att förstå att om A7 är P356523 och G7 är 163000, ska även de tomma cellerna G8 och G9 vara 163000 eftersom A8 och A9 är samma som A7.

 

Hoppas ni förstår mitt problem, och att någon kan tipsa om hur man enklast löser detta...

Link to comment
Share on other sites

Har fått bra hjälp med Excel hör förut, så jag kör igen och hoppas på det bästa:

 

excelproblemtu9.th.jpg

 

Jag har ett Excel-ark med 43000+ rader. Fenomenet enligt bilden återkommer genom hela arket. De tomma cellerna måste jag få ifyllda automatiskt på något sätt enligt den rödmarkerade texten. Finns det något sätt att får Excel att förstå att om A7 är P356523 och G7 är 163000, ska även de tomma cellerna G8 och G9 vara 163000 eftersom A8 och A9 är samma som A7.

 

Hoppas ni förstår mitt problem, och att någon kan tipsa om hur man enklast löser detta...

Tjenare.

 

Testa att skriva in formeln =IF(A2=A1;G1;0) i cellen G2, =IF(A3=A2;G2;0) i cellen G3 osv. Görs enkelt genom att markera G2 och G3 (efter att du skrivit in formlerna) och sedan dra krysset i det nedre högra hörnet så långt ned i kolumnen du vill att det ska gälla. Formen kollar om System Package Number på denna rad är samma som på raden innan och i så fall så får den samma Customer number också. Om inte får den värdet 0 och då vet du att du ska skriva in vilket Customer number detta System Package Number ska ha.

 

Ber om ursäkt ifall jag förklarar saker du redan kan.

 

 

Funkade det?

 

/D

Link to comment
Share on other sites

Tack Dexter! Jo det funkar ju alldeles utmärkt i varje "glapp" där det saknas customer number. Problemet är bara att detta är ett ark med 43000+ rader och jag måste alltså kopiera in formeln överallt i hela arket (det är alltså likande glapp överallt). Kanske du har fler tips?

 

Kan man inte få Excel att fylla ut alla tomma celler i G-kolumnen genom att kopiera värdet i den närmast överliggande cellen, dvs. att G8 och G9 ska innehålla samma värde som G7 osv.

Link to comment
Share on other sites

Tack Dexter! Jo det funkar ju alldeles utmärkt i varje "glapp" där det saknas customer number. Problemet är bara att detta är ett ark med 43000+ rader och jag måste alltså kopiera in formeln överallt i hela arket (det är alltså likande glapp överallt). Kanske du har fler tips?

 

Kan man inte få Excel att fylla ut alla tomma celler i G-kolumnen genom att kopiera värdet i den närmast överliggande cellen, dvs. att G8 och G9 ska innehålla samma värde som G7 osv.

Testa då detta:

 

Skapa ett macro med följande kod:

 

Range("G2").Select

Range(Selection, Selection.End(xlDown)).Select

Range("G2:100000").Select

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "=R[-1]C"

 

Macrot fyller alla tomma celler i kolumn G (från rad 2 till 1000000) med värdet som cellen i raden ovanför har. Ge sedan macrot ett kortkommande (tex Ctrl-ö) så du enkelt kan exekvera macrot när du vill autofylla cellerna.

 

/D

Link to comment
Share on other sites

Dexter: Tackar ödmjukast att du tog dig tid att hjälpa en SoldF-kamrat i nöd... Nu har jag aldrig jobbat med makron, så jag vet inte hur man ska börja. Jag vet att man kan gå till Tools -> Macro, men där tar det stopp. Vilken editor ska man köra för att få in den här koden?

Link to comment
Share on other sites

1. Gå till Tools - Macro - Record new Macro

2. Välj namn på macrot, ett eventuellt kortkommando och en ev beskrivning.

3. Skriv in ett par siffror i en tom cell.

4. Klicka på den fyrkantiga stop recording rutan.

5. Tryck Alt-F8, markera ditt macro och tryck Edit.

6. Ersätt den svarta koden ovanför End Sub med koden jag gav dig.

7. Stäng macro fönstren

8. Tryck ditt kortkommando för att köra macrot alternativt Alt-F8 eller lägg till en knapp i excel som kör ditt kommando

9. När du sparar excelboken sparas även ditt macro.

10. Du kan koppla macrot till att bara gälla ett visst blad så att du inte utför kopieringen på någon annan sida än den första ifall du råkar trycka ditt kortkommando när du är på ett annat excelblad. Lägg då till raden Sheets("shipments").Activate före de andra raderna jag skrev i förra inlägget.

 

Lycka till.

 

/D

Link to comment
Share on other sites

Tyvärr får jag upp meddelandet

 

Run time error '1004'

Method 'Range' of object '_Global' failed

 

Vad kan vara fel?

Sheets("shipments").Activate

Range("G2").Select

Range(Selection, Selection.End(xlDown)).Select

Range("G2:G65536").Select

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "=R[-1]C"

 

Jag missade bokstaven G och siffrorna efter bokstaven är det maximala antalet rader i ett excel ark. Det kan diffa mellan olika versioner. Ändra till lägre om det inte funkar.

 

Du kommer få ett felmeddelande om det inte finns några tomma celler att fylla men det är bara att klicka bort. Blir det för irriterande kan jag försöka klura ut ett sätt att slippa det också.

 

Sorry.

 

/D

Link to comment
Share on other sites

Det var länge sedan jag lekte med detta så jag fortsätter att förbättra det hela. Följande fyra rader räcker faktiskt.

 

Sheets("Sheet1").Activate

Range("G2:G65536").Select

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "=R[-1]C"

 

Vill du ha ett mer generellt macro som skulle klara av samma funktion på andra kolumner också? Dvs för alla tomma celler oavsett kolumn : kopiera värdet från cellen ovanför?

 

/D

Link to comment
Share on other sites

Nej jag får det inte att funka... Får upp felmeddelande som säger att cellerna inte kan hittas.

 

Kanske någon kan öppna filen och kolla om det går att få till? Skulle verkligen uppskattas!

 

Här finns Excel-filen (c:a 4 MB)

Sheets("Sheet1").Activate

Range("G2:G65536").Select

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "=R[-1]C"

 

Jag får samma fel när jag kör ovanstående kod på din fil. MEN det verkar som om dina tomma fält inte är tomma. Om jag markerar tomma fält och tar 'clear content' på dem så fungerar macrot på just de fälten. Ska kolla närmare på vad sjutton som finns i dina "tomma" fält.

 

/D

Link to comment
Share on other sites

Kapar denna tråd.

 

Jag har ett problem på jobbet.

Vi skriver rapporter om material åtgång i en mall med en massa artikelnummer och liknande.

 

Jag undrar om någon kan skapa ett macro som gör att:

När ett fält i kolumn A inte är ifylld tas hela raden bort:

 

Ex:

 

A B C

1 antal artnr benämning

2 3 12325 pryl

3 4 43433 grej

4 8 45343 mojäng

5 43344 sak

6 76 54566 milejox

osv:

 

Alltså vill jag att raden 5 ska försvinna, det kan vara många tomma rader i en rapport.

 

Går det att fixa så att man slipper sitta och ta bort allt manuellt.

Får inte exemplet att se ut riktigt som jag vill med mellanslag och sånt, hoppas ni kan fatta det iaf.

 

Tack på förhand.

Link to comment
Share on other sites

Kapar denna tråd.

 

Jag har ett problem på jobbet.

Vi skriver rapporter om material åtgång i en mall med en massa artikelnummer och liknande.

 

Jag undrar om någon kan skapa ett macro som gör att:

När ett fält i kolumn A inte är ifylld tas hela raden bort:

 

Ex:

 

A B C

1 antal artnr benämning

2 3 12325 pryl

3 4 43433 grej

4 8 45343 mojäng

5 43344 sak

6 76 54566 milejox

osv:

 

Alltså vill jag att raden 5 ska försvinna, det kan vara många tomma rader i en rapport.

 

Går det att fixa så att man slipper sitta och ta bort allt manuellt.

Får inte exemplet att se ut riktigt som jag vill med mellanslag och sånt, hoppas ni kan fatta det iaf.

 

Tack på förhand.

Testa denna (men ta backup innan):

 

Public Sub DeleteRowOnCell()

 

On Error Resume Next

Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

ActiveSheet.UsedRange

 

End Sub

 

 

Detta tar bort alla rader med en tom cell. Varning: Om du råkar ge en rad ett värde för mycket så antar macrot att alla andra rader saknar ett värde och deletar alla andra rader. :clap:

Link to comment
Share on other sites

Har provat att skapa ett nytt ark och lade in lite siffror, och mycket riktigt; ditt makro funkar ju perfekt! Men mitt ark funkar inte... Vad sjutton finns i de "tomma" cellerna...? Visste inte ens om att det fanns gömd information i Excel på det sättet.

Det finns en liten apostrof som indikerar att det är en tom formel.

 

Detta löser det hela.

 

With ActiveSheet

With .Columns("G:G")

.Replace _

What:="", _

Replacement:="$$$$$", _

LookAt:=xlWhole, _

SearchOrder:=xlByRows, _

MatchCase:=False

 

.Replace _

What:="$$$$$", _

Replacement:="", _

LookAt:=xlWhole, _

SearchOrder:=xlByRows, _

MatchCase:=False

End With

End With

 

Sheets("Sheet1").Activate

Range("G2:G65536").Select

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "=R[-1]C"

 

 

Byt ut Sheet1 mot namnet på bladet, shipments i ditt fall?

 

 

Den extra koden ska bara behövas köra första gången, men det skadar inte att ha den kvar.

 

OBS: Som koden är skriven nu utgår den från att den ska fylla i alla tomma celler med närmast ovanstående tomma rad. Den jämför inte de två radernas System Package number. Jag kan ta en titt på det imorgon. :clap:

 

/D

Link to comment
Share on other sites

  • 8 months later...

Lånar tråden...

 

Firman jag jobbar för ska byta system för att göra mail-utskick.

Har två xls filer med mailadresser.

 

Fil 1 innehåller den ursprungliga listan med prenumeranter.

Fil 2 innehåller en log på de som av-prenumererat via vår hemsidan.

 

Nu vill jag att ta bort alla adresser som ligger i fil 2 från fil 1.

 

Att handköra är inte aktuella då det handlar om ca 1000 adresser.

 

Någon som har en smart/smidig lösning på detta?

Link to comment
Share on other sites

Lånar tråden...

 

Firman jag jobbar för ska byta system för att göra mail-utskick.

Har två xls filer med mailadresser.

 

Fil 1 innehåller den ursprungliga listan med prenumeranter.

Fil 2 innehåller en log på de som av-prenumererat via vår hemsidan.

 

Nu vill jag att ta bort alla adresser som ligger i fil 2 från fil 1.

 

Att handköra är inte aktuella då det handlar om ca 1000 adresser.

 

Någon som har en smart/smidig lösning på detta?

Har gjort det för hand med ca 6000 addresser..

Sätt dom i varsin tabell sortera a-ö så ser du enkelt vilka som matchar, ctrl-click på alla "dubbla" och DEL

och efter ett litet tag har du en "ren" lista. Kanske tar 30min eller nått sånt..det går rätt fort faktiskt..

 

Om nu inte någon har något bättre sätt..

Link to comment
Share on other sites

  • 3 weeks later...

Kapar tråden lite...

 

Jag skulle vilja föra statistik över de gånger jag varit ute och sprungit. Detta vill jag använda excel till.

Det jag inte vet hur jag ska göra är om jag vill räkna ut tid per km. Dvs i en kolumn vill jag kunna skriva in tiden och nästa vill jag skriva i längden och så vill jag att excel fixar så snittiden dyker upp i den 3:e kolumnen. Alltså hur gör man för att få tid att vara tid och inte decimaler upp till 100?

 

Otydligt nog?

 

//Affe

Link to comment
Share on other sites

Kapar tråden lite...

 

Jag skulle vilja föra statistik över de gånger jag varit ute och sprungit. Detta vill jag använda excel till.

Det jag inte vet hur jag ska göra är om jag vill räkna ut tid per km. Dvs i en kolumn vill jag kunna skriva in tiden och nästa vill jag skriva i längden och så vill jag att excel fixar så snittiden dyker upp i den 3:e kolumnen. Alltså hur gör man för att få tid att vara tid och inte decimaler upp till 100?

 

Otydligt nog?

 

//Affe

Formatera en cell C1 så att den visar tid på formatet 37:30:50. Sedan formaterar du en cell C2 så att den visar tal med 0 decimaler. Den tredje cellen formaterar du som den första och ger den formeln =C1/(C2/1000)

 

Då ska det fungera om du skriver in tiden på rätt format och sträckan i hela meter.

 

Funkade den beskrivningen eller har jag missförstått dig?

Link to comment
Share on other sites

Kapar tråden lite...

 

Jag skulle vilja föra statistik över de gånger jag varit ute och sprungit. Detta vill jag använda excel till.

Det jag inte vet hur jag ska göra är om jag vill räkna ut tid per km. Dvs i en kolumn vill jag kunna skriva in tiden och nästa vill jag skriva i längden och så vill jag att excel fixar så snittiden dyker upp i den 3:e kolumnen. Alltså hur gör man för att få tid att vara tid och inte decimaler upp till 100?

 

Otydligt nog?

 

//Affe

Formatera en cell C1 så att den visar tid på formatet 37:30:50. Sedan formaterar du en cell C2 så att den visar tal med 0 decimaler. Den tredje cellen formaterar du som den första och ger den formeln =C1/(C2/1000)

 

Då ska det fungera om du skriver in tiden på rätt format och sträckan i hela meter.

 

Funkade den beskrivningen eller har jag missförstått dig?

 

Strålande!

Många tack, funkar superdobro!

Link to comment
Share on other sites

  • 2 weeks later...

nu är jag igång igen :)

 

Jag är så mycket nybörjare man kan bli i excel världen.

 

Om jag vill skriva en formel tex: =D2+D3+D4....+D220+D221

 

Måste jag då sitta och skriva (alt klicka) så hela vägen eller finns det ett enkelt sätt att dra ut det på likt det hade varit om jag skrivit fredag lördag söndag och sen dragit ut hela veckan...

Link to comment
Share on other sites

nu är jag igång igen :)

 

Jag är så mycket nybörjare man kan bli i excel världen.

 

Om jag vill skriva en formel tex: =D2+D3+D4....+D220+D221

 

Måste jag då sitta och skriva (alt klicka) så hela vägen eller finns det ett enkelt sätt att dra ut det på likt det hade varit om jag skrivit fredag lördag söndag och sen dragit ut hela veckan...

Om cellerna är bredvid varandra kan du skriva =SUMMA(D2:D221).

 

Infoga-Funktion är din vän. :)

 

/D

Link to comment
Share on other sites

nu är jag igång igen :)

 

Jag är så mycket nybörjare man kan bli i excel världen.

 

Om jag vill skriva en formel tex: =D2+D3+D4....+D220+D221

 

Måste jag då sitta och skriva (alt klicka) så hela vägen eller finns det ett enkelt sätt att dra ut det på likt det hade varit om jag skrivit fredag lördag söndag och sen dragit ut hela veckan...

Om cellerna är bredvid varandra kan du skriva =SUMMA(D2:D221).

 

Infoga-Funktion är din vän. :)

 

/D

 

Tack än en gång!

 

Det är roligt att lära! :rockon:

Link to comment
Share on other sites

Lånar tråden...

 

Firman jag jobbar för ska byta system för att göra mail-utskick.

Har två xls filer med mailadresser.

 

Fil 1 innehåller den ursprungliga listan med prenumeranter.

Fil 2 innehåller en log på de som av-prenumererat via vår hemsidan.

 

Nu vill jag att ta bort alla adresser som ligger i fil 2 från fil 1.

 

Att handköra är inte aktuella då det handlar om ca 1000 adresser.

 

Någon som har en smart/smidig lösning på detta?

1 Klipp ut adresserna från fil 2 och klipp in dem i samma kolumn som adresserna i fil 1.

2 Se till att kolumnen har en titel i översta raden tex Mailadress.

3 Markera alla rader i kolumnen inkl titelraden.

4 Klicka Data-Filter-Avancerat filter och klicka OK på meddelandet som dyker upp

5 Kryssa för enbart unika poster och tryck OK

6 Klicka på Redigera-Urklipp i Office

7 Kopiera de unika adresserna som nu finns i kolumnen (verifiera att den dyker upp i listan av urklipp)

8 Klipp in dem i en ny fil eller klicka Data-Filter-Visa alla

9 Markera kolumnen och höger klicka - Välj radera innehåll

10 Klipp in urklippet i kolumnen

11 Spara

 

Spara gärna en kopia på filen innan utifall att. :)

 

/D

Link to comment
Share on other sites

  • 3 weeks later...
Spara gärna en kopia på filen innan utifall att. ;-)

 

/D

 

Tack tack super tack, följdfrågan blir hur gör jag för att undvika

unika adresser som ev kan finnas i Fil 2?

Link to comment
Share on other sites

Spara gärna en kopia på filen innan utifall att. :/

 

/D

 

Tack tack super tack, följdfrågan blir hur gör jag för att undvika

unika adresser som ev kan finnas i Fil 2?

Menar du hur du blir av med dubbletter i fil 2?

 

Gör punkt 2 -11 i mitt föregående tips så har du en lista i fil2 som enbart innehåller unika adresser.

 

/D

Link to comment
Share on other sites

  • 2 weeks later...
Menar så här:

 

Fil 1

[email protected]

[email protected]

[email protected]

 

Fil 2

[email protected]

[email protected]

 

Det jag vill är att [email protected] tas bort från fil 1, men jag vill inte att [email protected] från fil 2 läggs till i fil 1.

1. Öppna upp både fil1 och fil2

2. Markera kolumnen i fil2 som innehåller adresserna (inkl kolumnrubrik)

3. Klipp in kolumnen i en tom kolumn i fil1. I detta exempel kallar vi den kolumn D och den tomma kolumnen till höger om den kolumn E.

4. I cell E2 skriv "=COUNTIF(D:D;A2)>0" och tryck enter. Kolumn A är i detta fall kolumnen i fil1 som innehåller adresserna.

5. Kopiera formeln i cell E2 till cell E3, E4 osv till sista rad i Kolumn A så att formeln i cell E47 är "=COUNTIF(D:D;A47)>0.

6. Makera hela fil1, klicka Data->Filter->AutoFilter

7. Välj TRUE överst i kolumn E så att du nu bara ser de rader som har dubletter i fil2

8. Markera alla dessa rader.

9. Högerklicka och välj delete-row

10. Klicka Data->Filter->Show All Du ser nu bara de rader som inte har en dublett i fil2

11. Markera kolumn D och E. Högerklicka och välj delete

12. Klicka Data->Filter->AutoFilter

 

Done!

 

Självklart kan man göra detta till ett Makro med ett kortkommando som du bara behöver trycka på för att köra det hela. Då jag inte vet vad dina filer/böcker/kolumner heter så blir det svårt för mig att göra det. Ett tips är att använda Macro->Spela in, så kommer den ihåg till nästa gång. Kan dock vara farligt om du ändrar format utan att sedan ändra i Macrot.

 

Detta tips hanterar inte befintliga dubletter i Fil1 (men det har du ju ett tips på i denna tråd redan) och den är inte känslig för stora/småbokstäver. Dvs den tar bort ollesnabela.gifsoldf.com om Ollesnabela.gifsoldf.com finns i fil2.

 

Lycka till.

 

/D

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...