2016-08-27 15 views
0

Ich arbeite an einem Fakturierungssystem mit Excel. Ich habe eine Liste von Daten und Kunden. Für jedes Datum, an dem ein Service benötigt wird, wird eine Zahl eingegeben, die die Anzahl der Stunden angibt, im Wesentlichen ein Jobblatt. Ich möchte, dass die Rechnung eine Liste der Daten zeigt, an denen der Kunde gebucht hat. Ich tat dies in Google Sheets und durch sie arbeitete:Excel, alle Daten mit einem Wert auflisten

=arrayformula(concatenate(if(not(ISBLANK(B2:D2)),text(B1:D1,"dd/MM/yyyy")&", ",""))) 

Ich habe jetzt verbrachte Wochen versucht, etwas Ähnliches zu bekommen treffen zu tun, aber haben kommen leer. Hat jemand eine Idee, wie man das in Excel macht? Danke, Chris

+0

Ich bin nicht ganz klar, was Sie zu generieren sind versuchen (ein Beispiel helfen würde), so dass ich weiß nicht, ob Sie brauche wirklich eine Array-Formel. Aber da Sie das hier verwenden und es funktioniert, beachten Sie, dass Excel sie anders macht. Google Suche auf "Excel Array Formel" (Sie müssen "Strg-Shift-Enter" drücken, um eine zu erstellen). – lurker

+0

Wenn Sie nicht über Excel 2016 verfügen, können Sie auch mehrere Zeichenfolgen, die von einem Array abgeleitet sind, nicht verketten, da Sie in Google Tabellen scheinbar dazu in der Lage sind. –

+0

Eine CSV-Liste in einer Zelle wie: "12/09/2016, 20/09/2016, 25/09/2016". Ich benutze Excel 2016, wenn dies hilft. –

Antwort

0

Da Sie auf Excel 2016, ich glaube, Sie verwenden können:

=CONCAT(IF(NOT(ISBLANK(B2:D2)),TEXT(B1:D1,"dd/MM/yyyy")&", ",""))

eingegeben als Matrixformel **.

Leider habe ich diese Version nicht, so kann ich das nicht überprüfen.

sollte ich noch hinzufügen, dass TEXTJOIN hier eine minimal effizientere Wahl sein kann:

https://support.office.com/en-us/article/TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c

Grüße

** Array Formeln in der gleichen Weise wie 'Standard' Formeln sind nicht eingegeben . Anstatt nur ENTER zu drücken, halten Sie zuerst STRG und SHIFT gedrückt und drücken erst dann ENTER. Wenn Sie es richtig gemacht haben, werden Sie bemerken, dass Excel geschweifte Klammern {} um die Formel legt (obwohl Sie nicht versuchen, diese selbst manuell einzufügen).

+0

Danke für die Hilfe. Ich bekomme immer noch #NAME? Fehler obwohl. –

+0

Aber Sie versuchen dies mit Excel 2016, nein? –

+0

Ah, es scheint einige zusätzliche Bedingungen für die Verwendung einiger dieser 2016 Funktionen zu geben: https://support.office.com/de-de/article/CONCAT-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2: Zitat: "WICHTIG: Diese Funktion ist verfügbar, wenn: 1) Sie ein Office 365-Abonnent sind und die neueste Version von Office installiert haben 2) Sie verwenden Excel Online; 3) Sie verwenden Excel Mobile; 4) Sie verwenden Excel für Android-Telefone und Tablets. " –

0

Für pre-2016:

Sub Concat_Vals() 

Dim r  As Range 
Dim Result As String 

For Each r In Range("A1:D1") 
    If Len(r.Offset(1, 0)) > 0 Then 
     Result = Result & ", " & r 
    End If 
Next r 

Result = Mid(Result, 3) 
Range("A10").Value = Result 

End Sub 

die die verketteten Ergebnisses in Zelle kehrt A10 und betreibt über den Bereich A1:D1 (beide wie in der oben erforderlich geändert werden).

Oder als UDF:

Function Concat_Vals(Rng As Range) 

For Each r In Rng 
    If Len(r) > 0 Then 
     Result = Result & ", " & Cells(1, r.Column) 
    End If 
Next r 

Concat_Vals = Mid(Result, 3) 

End Function 

Grüße

+0

Hallo, ich habe das als Funktion versucht, aber ich bekomme nur einen Wertfehler. Es funktionierte überhaupt nicht im Sub. –

+0

Arbeitete gut für mich als Sub. Können Sie näher ausführen "hat überhaupt nicht funktioniert"? –

+0

Es hat nichts getan. Soweit ich es beurteilen konnte. Ich denke, da es auf mehrere Zeilen angewendet werden muss, müsste es eine Funktion sein, nicht wahr? –

Verwandte Themen