Note: The other languages of the website are Google-translated. Back to English

Cum se concatenează coloanele de celule și se păstrează culoarea textului în Excel?

Așa cum știam cu toții, în timp ce concatenați sau combinați coloane de celule într-o singură coloană, formatarea celulei (cum ar fi culoarea fontului textului, formatarea numărului etc.) se va pierde. În acest articol, voi introduce câteva trucuri pentru a combina coloanele de celule într-una și pentru a păstra culoarea textului cât mai ușor posibil în Excel.

Concatenează coloanele celulei și păstrează culoarea fontului textului cu codul VBA


Concatenează coloanele celulei și păstrează culoarea fontului textului cu codul VBA

Pentru a finaliza această sarcină în Excel, următorul cod VBA vă poate face o favoare, vă rugăm să procedați astfel:

1. Țineți apăsat butonul ALT + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. Clic Insera > Moduleși lipiți următorul cod în Fereastra modulului.

Cod VBA: concatenează coloanele celulei și păstrează culoarea textului:

Sub MergeFormatCell()
'Updateby Extendoffice
    Dim xSRg As Range
    Dim xDRg As Range
    Dim xRgEachRow As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim I As Integer
    Dim xRgLen As Integer
    Dim xSRgRows As Integer
    Dim xAddress As String
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xSRg = Application.InputBox("Please select cell columns to concatenate:", "KuTools For Excel", xAddress, , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    xSRgRows = xSRg.Rows.Count
    Set xDRg = Application.InputBox("Please select cells to output the result:", "KuTools For Excel", , , , , , 8)
    If xDRg Is Nothing Then Exit Sub
    Set xDRg = xDRg(1)
    For I = 1 To xSRgRows
        xRgLen = 1
        With xDRg.Offset(I - 1)
            .Value = vbNullString
            .ClearFormats
            Set xRgEachRow = xSRg(1).Offset(I - 1).Resize(1, xSRg.Columns.Count)
            For Each xRgEach In xRgEachRow
                .Value = .Value & Trim(xRgEach.Value) & " "
            Next
            For Each xRgEach In xRgEachRow
                xRgVal = xRgEach.Value
                With .Characters(xRgLen, Len(Trim(xRgVal))).Font
                .Name = xRgEach.Font.Name
                .FontStyle = xRgEach.Font.FontStyle
                .Size = xRgEach.Font.Size
                .Strikethrough = xRgEach.Font.Strikethrough
                .Superscript = xRgEach.Font.Superscript
                .Subscript = xRgEach.Font.Subscript
                .OutlineFont = xRgEach.Font.OutlineFont
                .Shadow = xRgEach.Font.Shadow
                .Underline = xRgEach.Font.Underline
                .ColorIndex = xRgEach.Font.ColorIndex
                End With
                xRgLen = xRgLen + Len(Trim(xRgVal)) + 1
            Next
        End With
    Next I
End Sub

3. Apoi apăsați F5 pentru a rula acest cod și apare o casetă de prompt pentru a vă reaminti să selectați intervalul de date pe care doriți să îl combinați cu culoarea textului, vedeți captura de ecran:

4. Apoi faceți clic pe OK, apare o altă casetă de dialog, selectați celulele în care doriți să afișați rezultatele combinate, vedeți captura de ecran:

5. Apoi apasa OK , coloanele au fost concatenate fără a pierde culoarea textului, după cum se arată în următoarea captură de ecran:

notițe: Dacă datele care trebuiau combinate includ numere, atunci codul macro nu poate funcționa corect.


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (9)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest cod funcționează foarte bine. Dar, cum adaug spațiu înainte sau după text?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,
Aceste metode funcționează bine, până când xRgLen este mai mare de 255.
Se pare că acest parametru este un octet :-(
Cum poate fi depășită această limitare?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Fantástica la macro de concatenar cadena de texto conservando formatul de origine. În cazul în care nu funcționează cu F5, dar în pestaña macro, modific și opțiuni îmi permit să intre în modul de ejecuție cu CTRL+letra și funcționează de maravilla. Multumesc mult.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Habría manera de hacerlo con numere?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc pentru cod.
Dacă textul are „( )”, de exemplu „tomate (roșii)”. Nu merge la fel de bine. Există ceva de modificat pentru a lucra cu „( )”?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Rah,
Ce mai faci? Dacă textul are „( )”, nu este nevoie să schimbăm codul VBA. Vă rugăm să vedeți captura de ecran, textul „roșii (roșii)” poate fi combinat cu succes cu alte coloane de celule într-o singură coloană. Sper că vă poate ajuta.
Cu sinceritate,
Mandy
Acest comentariu a fost redus la minimum de moderatorul de pe site
multumesc pentru cod!
Poate fi actualizat automat coloana de concatenare dacă se face vreo modificare?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Kathy,
Ne pare rău, în prezent, nu există o modalitate bună de a face asta, trebuie să rulați din nou codul după ce modificați conținutul celulei. 😂
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bine, mulțumesc pentru răspuns
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL