2016-01-21 56 views
-1

我試圖通過一個表進行搜索,並連接從另一列肉條標準的單元格。在下面的例子我想說,如果(C = C1)連接一,串聯在科拉姆一個名字,把他們在「」如何連接Excel中的countif

A  B C 

Name 1 P1 C1 
Name 2 P2 C1 
Name 3 P1 C2 
Name 4 P1 C2 

結果應該是這樣的

C2 = "Name 3" "Name 4" 
+4

SO不是代碼寫入服務。請嘗試自己編寫代碼,如果遇到錯誤或問題,可以將它們發佈到此處,社區將幫助您解決問題。 – GrizzlyManBear

+2

列C是否總是排序?是否總是有2個應該連接?如果對這兩個問題中的任何一個的答案都是否定的,那麼您將需要vba,因爲@BearArmatis剛纔評論說SO不是我網站的代碼。 –

+0

沒有列C未排序。這也是一個6000左右的名單。我將不得不看看VBA。我想這可以用簡單的Excel公式來完成,這就是爲什麼我沒有寫任何代碼。謝謝您的幫助。 –

回答

-1

試試這個:

Dim row as Integer 
row = 2 
While Sheets(1).Range("C" + Cstr(row)).value <> "" 
    If Sheets(1).Range("C" + Cstr(row)).value = Sheets(1).Range("C" + Cstr(row+1)).Value Then 
     Sheets(1).Range("D" + Cstr(row)).Value = Sheets(1).Range("A" + Cstr(row)).Value + " " + Sheets(1).Range("A" + Cstr(row+1)).Value 
    End If 
    row = row + 1 
Wend 

或者,如果你想有一個單元格公式,把這個在D2單元格,然後向下拖動:

=IF(C1=C2,A1 & " " & A2,"") 

如果您想使用VBA進行排序,修改此代碼將執行此操作。你會想要改變範圍和鍵,這個有兩個排序鍵。

Application.ScreenUpdating = False 
With Range("A1:M" + Trim(Str(RowCount))) 
    .Sort Key1:=Range("M1"), _ 
      Order1:=xlAscending, _ 
      Header:=xlYes, _ 
      MatchCase:=False, _ 
      Orientation:=xlTopToBottom 

    .Sort Key1:=Range("A1"), _ 
      Order1:=xlAscending, _ 
      Header:=xlYes, _ 
      MatchCase:=False, _ 
      Orientation:=xlTopToBottom 
End With 
Application.ScreenUpdating = True 
+0

這將不得不修改以添加雙引號,但您明白了。 – PKatona

+1

由於評論意見中提到的OP,C欄不會被排序。該方法要求對列C進行排序。你也覆蓋你正在測試的細胞。因此如果在列C中有多於兩個具有相同的值,則它將只抓取每兩個。 –

+0

我是在寫評論的時候才寫的,所以在完成之前我沒有看到他們,是的,我應該像列表D那樣放置D列,但是你知道一些事情你們都是非常自由的下跌滴答聲。我會記住的。 – PKatona