Excel - združevanje teksta iz dveh celic

Pomoč pri izdelavi makrov
Odgovori
ajk
Prispevkov: 60
Pridružen: So Jan 01, 2011 10:20 pm

Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a ajk »

Pozdravljeni

Rabil bi pomoč pri sledeči težavi, ki je ne uspem rešit z makrojem. Torej imam sledečo tabelo. Tabela se navzdol nadaljuje v enaki obliki:

Koda: Izberi vse

kolona A		kolona B		kolona C	kolona D	kolona E
AD			BLOCK 06:55 'TEST'					06 55 00				
RE2			PONEDELJEK		2				06 55 00				
RE4X374737		TOREK			5				06 55 00	
RE5X374700		SREDA			7				06 55 00
RE5X374701		ČETRTEK			8				06 55 00		
RE3			PETEK			1				06 55 00	
AD			BLOCK END						06 55 00	
.			.			.		.		.
.			.			.		.		.
.			.			.		.		.
Rezultat pa mora biti sledeči: (povsod kjer je v koloni A v celici tekst AD se mora iz kolone B prenesti tekst in se združiti z tekstom v koloni A). Mislim da je iz kode bolj vidno, kaj se mora zgoditi

Koda: Izberi vse

kolona A		kolona B		kolona C	kolona D	kolona E
AD BLOCK 06:55 'TEST'								06 55 00				
RE2			PONEDELJEK		2				06 55 00				
RE4X374737		TOREK			5				06 55 00	
RE5X374700		SREDA			7				06 55 00	
RE5X374701		ČETRTEK			8				06 55 00	
RE3			PETEK			1				06 55 00	
AD BLOCK END									06 55 00	
.			.			.		.		.
.			.			.		.		.
.			.			.		.		.
Že vnaprej se zahvaljujem za pomoč

Lep pozdrav
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a admin »

Pozdravljeni,

Za kaj takšnega ne potrebujete makra. Postavite se v zadnjo kolono, recimo F in tja vpišite formulo in jo skopirajte navzdol po stolpcu

Če se v celici A nahaja AD potem temu pridruži presledek in celico B, sicer pa samo celico A

oz. v Excelovem jeziku:

Koda: Izberi vse

=IF(TRIM(A1)="AD";CONCAT(TRIM(A1);" ";TRIM(B1));TRIM(A1))
Na ta način nikoli ne pokvarite kolone A in lahko stvar popravljate kolikor želite.

Ker pa je makro zares preprost pa sem vam napisal tudi makro, v kolikor ga zares potrebujete:

Koda: Izberi vse

Option Explicit

Sub UrediKolonoA()
  Dim r As Integer: r = 1
    
  While Trim(Cells(r, 1)) <> ""
    If Trim(Cells(r, 1)) = "AD" Then
      Cells(r, 1) = "AD " & Trim(Cells(r, 2))
    End If
    
    r = r + 1
  Wend
End Sub
PS: Vsepovsod uporabljam funkcijo TRIM, ki iz besedila odstrani odvečne presledke na začetku in koncu. Ta funkcija je sicer povsem nepotrebna, a izkušnje mi govorijo, da uporabniki radi tlačite kakšne presledke (vsaj na konec) in imate potem včasih zato težave.
lp,
Matjaž Prtenjak
Administrator
ajk
Prispevkov: 60
Pridružen: So Jan 01, 2011 10:20 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a ajk »

Pozdravljeni

Najlepša hvala za odgovor. Samo eno vprašanje glede prvega dela odgovora. A je možno v eni formuli (ki je zdaj v celici F1)vpisati tudi da se prenesejo vrednosti drugih celic? Z funkcijo ki ste jo pripeli, se oblikuje pravilno kolona F1 kamor sem skopiral formulo. Npr. za prvo vrstico: F1 je prav, G1 mora biti prazna, H1 prazna, I1 prazna in J1 06 55 00 itd. Upam da sem razumljivo napisal kaj mislim

Koda: Izberi vse

kolona A	kolona B	  kolona C  kolona D  kolona E       Kolona F              Kolona G   Kolona H  Kolona I Kolona J
AD		BLOCK 06:55 'TEST'		      06 55 00       AD BLOCK 06:55 'TEST'                               06 55 00
RE2	        PONEDELJEK	    2		      06 55 00       RE2                   PONEDELJEK     2	         06 55 00
Mi pa vsekakor pride prav makro,ker tako obliko kot sem jo napisal zgoraj dobim z makrojem in bi ta makro samo še vključil. Makro deluje lepo, samo ena majhna napakica je še. Če je npr. v celici A vpisano AD in potem makro združi vsebino celic A in B v celici A, celica B pa mora ostati prazna. Probam to doseči pa mi ne uspe. Lahko prosim za pomoč.

Lep pozdrav
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a admin »

Koda: Izberi vse

Option Explicit

Sub UrediKolonoA()
  Dim r As Integer: r = 1
    
  While Trim(Cells(r, 1)) <> ""
    If Trim(Cells(r, 1)) = "AD" Then
      Cells(r, 1) = "AD " & Trim(Cells(r, 2))
      Cells(r, 2) = ""
    End If
    
    r = r + 1
  Wend
End Sub
lp,
Matjaž Prtenjak
Administrator
ajk
Prispevkov: 60
Pridružen: So Jan 01, 2011 10:20 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a ajk »

Pozdravljeni

Najlepša hvala. Zadeva deluje. Kaj vse sem probal, da bi to dosegel, pa je zadeva tako enostavna.....
Predvidevam pa da je odgovor na prvi del vprašanja negativen.
Zakaj ta del kode ni pravilen če ga vpišem (če je v prvi celici AD ali AD1 potem.....):

Koda: Izberi vse

If Trim(Cells(r, 1)) = "AD" Or AD1 Then
Lep pozdrav
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a admin »

Boste morali pogledati kakšen tečej ali prebrati kakšno knjigo.

Za začetnike je zelo primerna moja knjiga, ki pa ni več v prodaji, lahko pa si jo izposodite v knjižnicah po Sloveiji.

To kar ste vi napisali, računalnik vidi kot:

Koda: Izberi vse

If ( (Trim(Cells(r, 1)) = "AD") Or (AD1) ) Then
In zato seveda AD1 smatra kot spremenljivko. Tisto, kar želite/potrebujete vi, pa bo potrebno zapisati kot:

Koda: Izberi vse

If ( (Trim(Cells(r, 1)) = "AD") Or (Trim(Cells(r, 1)) = "AD1") ) Then
ali krajše:

Koda: Izberi vse

If Trim(Cells(r, 1)) = "AD" Or Trim(Cells(r, 1)) = "AD1" Then
lp,
Matjaž Prtenjak
Administrator
ajk
Prispevkov: 60
Pridružen: So Jan 01, 2011 10:20 pm

Re: Excel - združevanje teksta iz dveh celic

Odgovor Napisal/-a ajk »

Ja prav imate. Hvala za razlago.
Lep pozdrav
Odgovori