2017-08-18 61 views
1

如果我給定的值的範圍在Excel中的一行。該特定的每個單元可能具有類型編號的內容,或者它們可能是空白的。是否有一個功能/ Excel函數(非VBA),將打印該類型數小區對應的報頭(用逗號)組合。如果細胞中的值的範圍包含一個類型號打印,對應於標題

此外,如果細胞不包含的類型數量的內容然後不打印對應的標題,並移動到下一個單元。如果它是範圍中的最後一個值,那麼最後也不要打印逗號。我寧願它以某種方式在一個單元格中執行此操作,該單元格會查看一系列單元格,然後確定要打印哪個標題以及要忽略哪個標題。

我正在使用Excel 2013

我想在沒有VBA的情況下這樣做。這是下面一個例子:

Example Excel result

+0

哪個版本的Excel? – pnuts

+0

它只是B-G列嗎?或者你有更多? –

+0

這是一個例子,所以有超過6列(20列)和Excel的2013年我在尋找一個公式,這不是重複。 –

回答

0

所以我本來想出了這個解決方案,細化那麼一點點。我只希望它不那麼單調乏味,而且如果我有8列以上的話就更容易。

= IFERROR(IF(M243 = 0,LEFT(IF(D243> = 1,d $ 1 & 「」, 「」)& IF(E243> = 1,E $ 1 &」, 「」 「)& IF(F243> = 1,F $ 1 &」, 「」 「)& IF(G243> = 1,G $ 1 &」, 「」 「)& IF(H243> = 1,H $ 1 &」 (I243> = 1,I $ 1 &「,」,「」)& IF(J243> = 1,J $ 1 &「,」,「」)&如果(K243> = 1, ķ$ 1 & 「 」「 」)IF &(L243> = 1,L 1 $ &「, 」「」)& IF(M243> = 1,M $ 1, 「」),LEN(IF(D243> = 1,d $ 1 & 「 」, 「」)& IF(E243> = 1,E $ 1 & 「」, 「」)& IF(F243> = 1,F $ 1 & 「 」「 」)& IF(G243> = 1,G $ 1 &「, 」「」)& IF(1 & H243> = 1,H $ (I243> = 1,I $ 1 &「,」,「」)& IF(J243> = 1,J $ 1 &「,」,「」)& IF(K243> = 1 ,K $ 1 & 「 」「 」)& IF(L243> = 1,L $ 1 &「, 」「 」)& IF(M243> = 1,M $ 1,「」)) - 1),LEFT( IF(D243> = 1,d $ 1 & 「 」, 「」)如果(G243> = 1,G $ 1 &「,」F243> = 1,F $ 1 &「,」,「如果(J243> = 1,J $ 1,「」)& & 「 」「 」)& IF(K243> = 1,K $ 1 &「, 」「 」)& IF(L243> = 1,L $ 1 &「, 」「」)& IF(M243> = 1,M $ 1,「」),LEN(IF(D243> = 1,D $ 1 &「, 」,「」)& IF(E243> = 1,E $ 1 &「,」「」「)& IF F243> = 1,F $ 1 & 「 」「 」)& IF(G243> = 1,G $ 1 &「, 」「 」)& IF(H243> = 1,H $ 1 &「, 」「」)& IF(I243> = 1,I $ 1 & 「 」「 」)& IF(J243> = 1,J $ 1 &「, 」「 」)& IF(K243> = 1,K $ 1 &「, 」「」)& IF (L243> = 1,L $ 1 & 「 」「 」)& IF(M243> = 1,M $ 1,「 」)))),「」)

這需要輸出的長度並在最後取下最後一個逗號。我將行更改爲零,而不是將單元格留空。

雖然以上是醜陋的,這顯然不是沒有VBA的最佳解決方案,但它是唯一的解決辦法我能想出只是使用Excel的功能。

0

有這個一個簡單的方法,IF第一列始終是一個數字,或者如果你能以逗號如果第一個開頭的字符串生活列不是數字。

= IF(ISNUMBER(F5); F4 & IF(ISNUMBER(G5); 「」 &G4; 「」)& IF(ISNUMBER(H5); 「」 &H4; 「」)& IF(ISNUMBER( I5); 「」 &I4; 「」)& IF(ISNUMBER(J5); 「」 &J4; 「」)& IF(ISNUMBER(K5); 「」 &K4; 「」)& IF(ISNUMBER(L5);」, 「&L4;」「))

如果它是完全隨機的哪一列包含第一個數字,那麼您將有t o展開公式以包含與此公式中的第一個ISNUMBER語句類似的第二個單元格。這將隨後在兩個封閉括號之間放置在端像這樣:

..... & IF(ISNUMBER(L5); 「」 &L4; 「」); IF(ISNUMBER(G5); G4 & IF(ISNUMBER(H5 .......)

+0

一個單元格是否包含一個數字是隨機的,所以序列會改變。有沒有辦法做到這一點與範圍,如果我有300 +列,我不得不處理,因爲輸入isnumber(所有300項將變得單調乏味 –

+0

@rossjohnson那麼你應該提到,在你的問題開始與 – Luuklag

0

使用一箇中間排保存複製的地獄和粘貼值。

在中間排6,把這個公式和拖動它跨越:

=IF(ISNUMBER(B3),B1&",","") 

然後,在中間結果細胞B8,把這個:

=CONCATENATE(B6,C6,D6,E6,F6,G6,H6,I6) 

現在,去掉最後一個逗號:

=left(B8,Len(b8)-1) 

注意,在Excel 2016年,這是很容易:在Concat()功能意味着你可以進入細胞concantenate成範圍:=concat(B6:AZ6)或什麼的。

+0

如果我有300多行這可能是矯枉過正 –

+0

行或列?無論如何 - 我想你是在談論進入Concantenate函數?爲了使它快一點,開始輸入公式'= Concantenate('然後按住CTRL鍵,然後你可以依次點擊每個單元格,並將它添加到該函數的參數列表中。請注意,Concantenate限制爲256個參數,我認爲,所以您可能必須打破它如果你有超過這麼多列的話,可以分成兩部分。 – ainwood

0

對於它的價值,這是非常容易使用VBA來做到這一點:

Public Function Concatenate_if(valuesToConcatenate As Range, cellsToCheck As Range) As String 
Dim i As Long 
Dim sOutput As String 
For i = 1 To valuesToConcatenate.Columns.Count 
    If IsNumeric(cellsToCheck(1, i).Value) Then 
     sOutput = sOutput & valuesToConcatenate(1, i) & "," 
    End If 
Next i 
Concatenate_if = Left(sOutput, Len(sOutput) - 1) 
End Function 
相關問題