2017-06-19 1 views
1

Guten Morgen,Concatenate Zellen in einem Bereich in einen String pro Zeile erste

Ich möchte einen Satz in eine neue Zelle (I23) machen, mit allen Zellen-Werten im Bereich J2: S2, wenn sie nicht leer sind .

Dies ist mein Board: "in diesem Morgen habe ich oui haben, aaaaaah, nooooo, yeeees, 225, vielleicht, y, y"

:

enter image description here

Es ein Satz wie markieren sollte

Aber der pb ist die Zahl der Werte ändern kann (Sie es in der zweiten Reihe sehen)

dies ist mein Code für jetzt:

y = Sum("J2:S2") 
    For Z = 1 To Z = y 
    If Range("J2:S2") <> " " Then 
    Cells(Z, 2) = Range("J2:S2") 
    End If 
    Next 

Antwort

1

Guten Nachmittag hier. Etwas, das wohl funktionieren würde:

Option Explicit 

Public Sub J2S2() 

    Dim rngCell   As Range 
    Dim strResult  As String 

    For Each rngCell In Range("J2:S2") 
     If Len(rngCell) Then 
      strResult = strResult & " " & rngCell 
     End If 
    Next rngCell 

    Debug.Print Trim(strResult & ".") 

End Sub 

Er druckt alle Werte der Zellen im Bereich J2:S2 zum sofortigen Fenster. Getrennt mit einem Leerzeichen. Ich habe am Ende einen Punkt hinzugefügt, so weit wie Sie erwähnt haben, sollte die Ausgabe ein Satz sein.

Wenn Sie es sentece Fall machen wollen, hier ist ein gutes Beispiel: Converting to sentence case using VBA

Edit: Alternativ, wenn Sie zuerst durch Spalten Schleife möchten, versuchen Sie dies:

Option Explicit 

Public Sub ColumnsFirstJ2S4() 

    Dim rngCell   As Range 
    Dim strResult  As String 

    Dim lngRow   As Long 
    Dim lngCol   As Long 

    Dim rngTarget  As Range 

    Set rngTarget = ActiveSheet.Range("J2:S4") 

    With rngTarget 

    For lngCol = .Column To .Columns.Count + .Column 
     For lngRow = .Row To .Rows.Count + .Row 

       If Len(ActiveSheet.Cells(lngRow, lngCol)) Then 
        strResult = strResult & " " & ActiveSheet.Cells(lngRow, lngCol) 
       End If 

     Next lngRow 
    Next lngCol 

    End With 

    Debug.Print "ADDING TEXT here " & Trim(strResult & ".") 
    ActiveSheet.Range("I23") = "ADDING TEXT here " & Trim(strResult & ".") 

End Sub 
+1

Thank Sie für Ihre Antwort Vityata! Dein Code ist großartig und er hilft mir sehr! Aber ich habe immer noch Probleme, Ihr Code schreibt Zeile für Zeile, ist es möglich, Spalte für Spalte zu schreiben? und wenn ich es in Zellen schreiben will, kann ich Range ("I23") nicht machen. value = Debug.Print Trim (strResult & "."). Und wenn ich Text davor hinzufügen möchte? – babou

+1

@babou - siehe die Bearbeitung :) – Vityata

+0

Es schreiben Sie es gut in einer Zelle, aber immer noch Zeile für Zeile :( – babou

Verwandte Themen