Kom ihåg mig?
Home Menu

Menu


C# och Excel

 
Ämnesverktyg Visningsalternativ
Oläst 2013-02-03, 19:44 #1
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Standard C# och Excel

Sitter och pillar lite på ett program som ska underlätta lite när man skriver ut adressfiler.

Jag har en excel-fil med olika fält, ink. postnummer. Det jag skulle vilja göra är att på den sista raden för varje unikt postnummer, ändra fältet och lägga till en stjärna.

Så exempelvis:

Citat:
72133
72133
72133*
72134
72334*
72555
72555
72555
72555
72555*
.... ni förstår säkert

Har inte mycket erfarenhet inom Excel. Jag antar(?) att jag måste göra detta i utvecklingsmiljö som C#, att exempelvis läsa in alla värden, modifiera för att sedan generera en ny Excel-fil.

Tänker jag knasigt eller är detta the way to go?
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-03, 19:58 #2
gooses avatar
goose goose är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2007
Inlägg: 451
goose goose är inte uppkopplad
Flitig postare
gooses avatar
 
Reg.datum: Jun 2007
Inlägg: 451
Du kan annars skriva ett macro i excel som du exekverar på din data, så slipper du gå vägen via .net.
goose är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-03, 20:01 #3
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Japp, läser på om det nu faktiskt, dock verkar jag inte kunna hitta någon hjälp, det jag vill åstakomma verkar inte vara så populärt

Någon som är mer hemma på Excel får gärna hjälpa till
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-03, 22:05 #4
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
Använd en if-sats, kolla om nästkommande skiljer sig, sätt i så fall en stjärna. Sen kan du slå ihop kolumner, alt. Sammanfoga text med stjärna.

Googla if och excel (eller OM och excel om du kör svenska)
digiArt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 00:25 #5
aelanders avatar
aelander aelander är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 146
aelander aelander är inte uppkopplad
Medlem
aelanders avatar
 
Reg.datum: Dec 2004
Inlägg: 146
Två sätt, finns kanske fler bra eller bättre.

FÖRSTA SÄTTET är att använda sig av villkorsstyrd formatering

-1-
Välj Arkiv - Alternativ - Formler. Sätt i bock för R1C1-referenser .. OK

-2-
Markera dina postnummer

-3-
I fliken start (den man vanligtvis finns i) väljer du
'Villkorsstyrd formatering'
Välj 'Hantera regler' lägst ner

I dialogrutan väljer du 'Ny regel'
I Välj regeltyp väljer du 'Bestäm vilka celler som ska formateras genom att använda en formel'
I fältet under 'Formatera värden där den här formeln är sann:' skriver du
=om(RC<>R[+1]C;1;0)


Klicka på 'format' - välj 'Anpassat' och där det nu står 'Standard' skriver du istället 00000\*
Du kan även välja att skriva 000\ 00\*

och så OK OK OK

Om du valde format 000\ 00\* så välj Crtl+1 och välj Tal - Kategori - Postnummer
så blir postnumrens utseende som vi brukar se dem (Svenska postnr)

-4-
Kan se lite konstigt ut med justeringen. Du kan t ex vänsterjustera hela kolumnen.
Går att lösa så att du får lämplig stor 'padding' till vänster. Hör av dig om det är aktuellt

-5-
Nu kan du ta bort bocken som du satte i enligt punkt 1




ANDRA SÄTTET är att infoga en kolumn till höger som dina postnr och sätta * där.

-1-
Välj Arkiv - Alternativ - Formler. Sätt i bock för R1C1-referenser .. OK

-2-
Infoga en kolumn till höger om postnummerkolumnen

-3-
Skriv formeln
=OM(RC[-1]<>R[1]C[-1];"*";"")
i den infogade kolumnen. På alla rader där det finns postnr.

-4-
Nu kan du ta bort bocken som du satte i enligt punkt 1

Klart!


Anledningen till att göra detta
Välj Arkiv - Alternativ - Formler. Sätt i bock för R1C1-referenser .. OK
är att jag inte vet var dina postnr finns i ditt kalkylblad och alltså inte kan skriva rätt formler då.


Lycka till! Hör av gärna av dig om det fungerade som du ville.

Senast redigerad av aelander den 2013-02-04 klockan 00:27
aelander är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 01:16 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Det är ett ganska enkelt problem i Excel:

Om du har dina värden i kolumnen A med början på rad 6 så kan du lägga in följande formel i CELL B6 =OM(A6=A7;A6;SAMMANFOGA(A6;"*"))

Sen kopierar du den formeln neråt så ska du få precis vad jag tror du vill ha.

Du har dock en bugg i din specifikation på rad 4, somjag tror du skrivit fel för där får jag en asterisk men det har du inte med i ditt krav.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 01:20 #7
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Väl förklarat aelander!
Conny, jag förstår inte hur du menar. Måste jag köra den formeln på alla rader, eller?

Jag har iaf gjort en lösning i C#, som läser av alla rader, hittar samband (x,y != x,y+1) och sätter en stjärna.

Ska finslipa lite och göra lite mer automatik så ska vi se hur det blir. Kan slänga upp det här också. Tanken är att detta ska spara tid, då det ska användas 15-20 gånger per dag, i stora Excel-filer.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 01:33 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Här kommer ett VBA-Makro som du kan lägga in i din VBA-modul om du hellre föredrar det sättet:

Första parametern motsvarar cell A6 och andra parametern motsvarar cell A7 och tredje parametern är valfri sträng m du vill visa i slutet av postnummret. Jag har lagt upp detta som strängvärden men det funkar lika bra om du använder talvärden enligt mina preliminära tester.


Kod:
function AddCharAtEnd(FirstValue as String, CompareToValue as String, StringToAdd as String) as string
	if (FirstValue<>CompareToValue) then
		AddCharAtEnd = FirstValue & StringToAdd
	else
		AddCharAtEnd = FirstValue
	endif
end function

Anropet till makrot i cell B6 kommer att se ut så här:
Kod:
=AddCharAtEnd(A6;A7;"*")
Kopiera denna cell neråt så mycket du behöver så får du rätt resultat.

Senast redigerad av Conny Westh den 2013-02-04 klockan 01:44
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 01:40 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av yakuzaemme Visa inlägg
Väl förklarat aelander!
Conny, jag förstår inte hur du menar. Måste jag köra den formeln på alla rader, eller?

Jag har iaf gjort en lösning i C#, som läser av alla rader, hittar samband (x,y != x,y+1) och sätter en stjärna.

Ska finslipa lite och göra lite mer automatik så ska vi se hur det blir. Kan slänga upp det här också. Tanken är att detta ska spara tid, då det ska användas 15-20 gånger per dag, i stora Excel-filer.
I de lösningar jag redovisat så förändras inte originalvärdet utan du lägger det i en egen kolumn. Jag brukar aldrig förändra originalkvärdet för om det går åt skogen så vill jag enkelt kunna ändra formeln och sedan köra om resultatet.

I mina exempel så har jag förutsatt att du börjar med att lägga in dina postnr i cell A6 och sedan går neråt till A7, A8 osv...

Både min första formel och min andra formel kan du lägga i B6 och sedan kopiera den neråt så kommer referenserna till A6 och A7 att justeras så de blir rätt.

Då får du en stjärna i den sista förekomsten av varje postnr i kolumnen B, men kolumn A är oförändrad.

Senast redigerad av Conny Westh den 2013-02-04 klockan 01:48
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-02-04, 10:08 #10
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Kanske jag som är lite trög när det kommer till Excel, men med din kod Conny så måste man skriva in fälten manuellt, och dessutom köra den flera gånger? Tanken är ju somsagt att spara tid, att snabbt köra ett skript som modifierar kolumnerna för att spara och skicka till produktion. Inga extra fält ska läggas till, utan dessa Excel skickas sedan till maskin för att bli utskrivna som adresser, sådana som sätts på reklam osv. Olika brevbärare har olika postnummer, så därför brukar man lägga dessa i olika buntar, och markera den sista med stjärnor så den som packar in detta i lådor innan det når Posten gör det till separata buntar.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:45.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017