2015-08-23 149 views
-1

只是一個免責聲明:我對Excel和SQL的經驗有限......我基本上是一個noob,所以請耐心等待。根據以前的列數據在Excel中創建新列

我有一個很大的Excel電子表格,每天發送給我,我想操縱。

我想添加幾個列,根據各自的行創建值。

ID Color Brand Indicator 
1 Green Vizio TRUE 
2 Yellow Samsung FALSE 
3 Blue Samsung TRUE 
4 Red  Sony FALSE 
5 Orange Vizio TRUE 

在上面的示例中,Indicator列是我希望基於前幾列中的值創建的列。如果Brand中包含Vizio這個詞,或者顏色是藍色,那麼該指標應該是正確的。我提到它必須在其中包含vizio這個詞,因爲有些情況下,它不會是簡單的「vizio」,但可能是「vizio電視」。

我想盡可能地自動化這個過程,所以你認爲最好使用Excel VBA宏或SQL來做這件事嗎?

任何幫助將不勝感激,謝謝。

+0

您正在使用哪個數據庫 –

+0

我將使用計算列來完成此操作,如果我的數據庫支持計算列。 '指標爲(品牌類似'%Vizio%'或顏色='藍色',然後'真'其他'錯'結束)' –

+0

另一個可用於VBA的公式:'= OR(EXACT(B2,「Blue 「),EXACT(C2,」Vizio「))' –

回答

0

您可以使用以下Excel宏。

Public Sub AddIndicators() 
    Const INDICATOR_1_COLUMN = 4 
    Const INDICATOR_1_FORMULA = "=OR(IFERROR(SEARCH(""vizio"",C2),0),(B2=""blue""))" 

    [a2:index(a:a,counta(a:a))].Offset(, INDICATOR_1_COLUMN - 1) = INDICATOR_1_FORMULA 
End Sub 

這可以很容易地擴展爲額外的指標列。

只要您收到您的日常工作簿(並且不需要將宏添加到傳入工作簿)就可以運行此宏,只需將此宏添加到您的Personal Workbook即可。

完成此操作後,只需確保您的日常工作簿處於打開狀態並且在執行宏之前需要指示器的工作表上。

如果或許您不希望中的公式來留在指標列,你可以使用這個版本的宏代替:

Public Sub AddIndicators() 
    Const INDICATOR_1_COLUMN = 4 
    Const INDICATOR_1_FORMULA = "=OR(IFERROR(SEARCH(""vizio"",C2),0),(B2=""blue""))" 

    With [a2:index(a:a,counta(a:a))].Offset(, INDICATOR_1_COLUMN - 1) 
     .Formula = INDICATOR_1_FORMULA 
     .Value = .Value 
    End With 
End Sub 
+0

用戶收到郵件中的Excel表。因此,需要在「收到的excel」或需要從「收到excel」複製粘貼到vB腳本excel中的數據中創建宏或vscript。這些不必要的任務降低了自動化水平。 – seahawk

+0

@seahawk請停止。這是非生產性的。如所暗示的,宏將駐留在個人工作簿中,而不是傳入的工作簿。它可以在沒有額外工作的情況下執行。 –

+1

你說的和我已經說過的一樣。宏將駐留在個人工作簿中,數據將駐留在傳入工作簿中。宏應該從個人工作簿移動到傳入工作簿或從傳入到個人數據,因爲工作簿宏不寫在這裏。因此,該過程不像您所解釋的那樣是自動的。 – seahawk

0

你的要求是很簡單的。你不必去VBscript,宏等。它可以簡單地用Excel函數完成。

=OR(ISNUMBER(SEARCH("blue",B2)),(ISNUMBER(SEARCH("vizio",C2)))) 

假設:顏色在列B中,品牌在列c中,數據從第2行開始。第一行用於標題。

+0

當然可以。但是,OP特別聲明他希望儘可能地使這個過程自動化...... ***所以這不是一個合適的解決方案,因爲它需要在工作簿到達時每天手動添加公式。 –

+1

@ExcelHero:我不同意你的看法。如果數據存在於Excel表格中。通過放置上述公式並單擊單元格的右下角,將填充「指標」列。賓果,它的成功。字段序列應與此問題中的相同。 – seahawk

+0

您剛描述了一個手動過程。 –

相關問題