2015-04-15 47 views
0

我試過了concatenate函數,但它並沒有真正有用。excel查詢追加上面的行到單元格

我試圖完成,所以這裏是截圖/圖片 enter image description here

基本上,我需要能夠爲分數輸入數據,然後讓細胞自動填充基於用戶和他們的得分數據與相應的瓷磚,我的混淆是如何做到這一點,如果/多個用戶,如果他們在同一個瓷磚上。

+0

嗨,哪個單元格應該自動填充? –

+0

偉大的問題!這些圖塊與總計行相對應。瓦片需要填寫名稱。 – aaron1312

+0

有多少用戶,以及它將如何變化? Excel加入字符串真的很糟糕:-)一種選擇是使用長條件連接(包括所有用戶的分數)。另一個選擇是幫助功能 - 這意味着一點VBA – Captain

回答

0

好的......我不知道你是否有一個Tile 1的機制,知道它是Tile 1等,但我做的是將數字放到同一個單元格中的另一個表單上。即在工作表單元格B181。這樣,我們可以只引用單元格,而不是公式中的任何硬編碼值...

我還決定,如果有與分數沒有名字,那麼我們就只想瓷磚的名稱(例如Tile 1

所以這給可寫入B18並抄送範圍B18:F31公式的第一部分:

=IF(Tiles!B18="","",IF(ISERROR(MATCH(Tiles!B18,$B$7:$H$7,0)),"Tile "&Tiles!B18,...)) 

這是什麼做的是:

  • 檢查片 - 如果相應的單元格是空的,那麼這是不是瓷磚,我們只是用MATCH,看看是否能得分是通過任何用戶持有放""
  • - 如果沒有找到它,然後它給出了一個錯誤,因此IF(ISERROR(...))將僅返回瓷磚名字
  • ...是其中兩個選項有...

OPTION 1 - 過長...公式
更換...

MID(IF($B$7=Tiles!B18,", "&$B$2,"")&IF($C$7=Tiles!B18,", "&$C$2,"")&IF($D$7=Tiles!B18,", "&$D$2,"")&IF($E$7=Tiles!B18,", "&$E$2,""),3,9999) 

...並複製&IF($E$7=Tiles!B18,", "&$E$2,""),每個區有必要列的22名球員。

因此,該單位是「如果玩家的分數與瓦片數量相同,給我」,名稱「否則空白」,我們將其與&運營商加入。
這包裹在MID(...,3,9999)中,所以我們在我們找到的第一個名字的開始處刪除「,」(加入的IF陳述會給出例如「,Aaron,無限用戶」)。

此選項是有點痛苦寫(讀!),但它只有做一次和公式可以複製和粘貼...

選擇2 - VBA函數和數組公式

Public Function JOIN(rng As Variant, Optional separator = ", ") As String 
    JOIN = "" 
    Dim v As String 
    For Each c In rng 
    If IsObject(c) Then 
     v = c.Text 
    Else 
     v = c 
    End If 
    If v <> "" Then 
     If JOIN = "" Then 
     JOIN = v 
     Else 
     JOIN = JOIN & separator & v 
     End If 
    End If 
    Next c 
End Function 

該函數將連接單元格的值範圍或字符串數​​組。用(使用Ctrl鍵在Excel中輸入 + + 輸入)數組公式使用它意味着我們可以做一個有條件的加入...
所以...變爲:

JOIN(IF($B$7:$H$7=Tiles!B18,$B$2:$H$2,"")) 

對於本,將根據圖塊編號檢查分數範圍$B$7:$H$7中的每個值。如果不匹配,則返回「」,否則返回相應的名稱(範圍爲$B$2:$H$2)。這將給我們一系列的空白和JOIN將加入的名稱...

此選項意味着啓用宏的工作簿,並使用「更復雜」的數組公式。但數組公式很好,我建議大家和他們一起玩;-)。 cpearson有一個很好的介紹:http://www.cpearson.com/excel/arrayformulas.aspx

玩得開心!