APC-mannen Posted September 24, 2007 Report Share Posted September 24, 2007 Har fått bra hjälp med Excel hör förut, så jag kör igen och hoppas på det bästa: 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 More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 Har fått bra hjälp med Excel hör förut, så jag kör igen och hoppas på det bästa: 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 More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 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 More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 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 More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 Tyvärr får jag upp meddelandet Run time error '1004' Method 'Range' of object '_Global' failed Vad kan vara fel? Link to comment Share on other sites More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 Debuggern gulmarkerar även raden med Range("G2:100000").Select Link to comment Share on other sites More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 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) Link to comment Share on other sites More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
gislemark Posted September 24, 2007 Report Share Posted September 24, 2007 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 More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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. Link to comment Share on other sites More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 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. Link to comment Share on other sites More sharing options...
Dexter Posted September 24, 2007 Report Share Posted September 24, 2007 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. /D Link to comment Share on other sites More sharing options...
APC-mannen Posted September 24, 2007 Author Report Share Posted September 24, 2007 DEXTER!!! You're the man Det där gjorde susen! Fan va gott. Tack så mycket för att du orkade lägga ner tid på att hjälpa mig med detta. Link to comment Share on other sites More sharing options...
FkN Posted May 27, 2008 Report Share Posted May 27, 2008 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 More sharing options...
tinhead Posted May 27, 2008 Report Share Posted May 27, 2008 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 More sharing options...
alfie Posted June 12, 2008 Report Share Posted June 12, 2008 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 More sharing options...
Dexter Posted June 12, 2008 Report Share Posted June 12, 2008 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 More sharing options...
alfie Posted June 12, 2008 Report Share Posted June 12, 2008 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 More sharing options...
alfie Posted June 26, 2008 Report Share Posted June 26, 2008 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 More sharing options...
Dexter Posted June 26, 2008 Report Share Posted June 26, 2008 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 More sharing options...
alfie Posted June 26, 2008 Report Share Posted June 26, 2008 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! Link to comment Share on other sites More sharing options...
Dexter Posted June 26, 2008 Report Share Posted June 26, 2008 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 More sharing options...
FkN Posted July 16, 2008 Report Share Posted July 16, 2008 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 More sharing options...
Dexter Posted July 19, 2008 Report Share Posted July 19, 2008 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 More sharing options...
FkN Posted July 29, 2008 Report Share Posted July 29, 2008 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. Link to comment Share on other sites More sharing options...
Dexter Posted July 29, 2008 Report Share Posted July 29, 2008 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 ollesoldf.com om Ollesoldf.com finns i fil2. Lycka till. /D Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.