2016-04-01 11 views
1

Ich brauche Hilfe, um zusätzliche Spalte oder Header namens „Person“ mit Bedingungen in Spalte M zu schreiben:VBA/Makro eine andere colum mit Bedingungen

Wenn die erste Spalte (Column A) diese Schlüsselwörter hat "AU", "FJ", "NC", "NZ", "SG12", wird der Text in (column M) sollte Person1

werden, wenn die erste Spalte (Column A) diese Keywords hat "ID", "PH26", "PH24", "TH", "ZA", der Text in (column M) Person2

sein sollte Wenn die erste Spalte (Column A) hat diese Schlüsselwörter "JP", "MY", "PH", "SG", "VN", Der Text in (column M) sollte Person3

Ich mag diese Aktion haben, das letzte, was zu sein (nach allem).

Ich habe versucht, ein Makro aufzunehmen. Filtern Sie die Stichwörter und geben Sie sie manuell ein. Ziehen Sie sie nach unten, um sie zu kopieren. Es scheint jedoch, dass die gefilterten Daten auf andere Weise eingefügt werden sollten.

Der Bereich auch dynamisch sein sollte, wie ich verschiedene Datenmenge jedes Mal

Im Folgenden haben wird, ist mein Code so weit:

Sub person() 

    Selection.AutoFilter 
    ActiveSheet.Range("$A$1:$L$38").AutoFilter Field:=1, Criteria1:=Array("AU", _ 
     "FJ", "NC", "NZ", "SG12"), Operator:=xlFilterValues 
    ActiveWindow.LargeScroll ToRight:=1 
    Range("M2").Select 
    ActiveCell.FormulaR1C1 = "Person1" 
    Selection.FillDown 
End Sub 

Antwort

1

A verschachtelte IF-Formel mit OR kann dies erreichen.

With Worksheets("Sheet1") '<~~ you should know what worksheet you are on! 
    With Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)) 
     .Offset(0, 12).FormulaR1C1 = _ 
      "=if(or(rc1={""AU"", ""FJ"", ""NC"", ""NZ"", ""SG12""}), ""Person1"", " & _ 
      "if(or(rc1={""ID"", ""PH26"", ""PH24"", ""TH"", ""ZA""}), ""Person2"", " & _ 
      "if(or(rc1={""JP"", ""MY"", ""PH"", ""SG"", ""VN""}), ""Person3"", " & _ 
      "TEXT(,))))" 
     'optionally revert the formulas to values 
     '.Offset(0, 12) = .Offset(0, 12).value 
    End With 
End With 
+0

löste mein Problem! Danke für diese Antwort – markerbean

1

versuchen, den Code unten

Sub testing() 
    last = Range("A" & Rows.Count).End(xlUp).Row 
    For i = 1 To last 
     If Cells(i, 1) = """AU"", ""FJ"", ""NC"", ""NZ"", ""SG12""," Then 
      Cells(i, 13) = "Person1" 
     ElseIf Cells(i, 1) = """ID"", ""PH26"", ""PH24"", ""TH"", ""ZA""," Then 
      Cells(i, 13) = "Person2" 
     ElseIf Cells(i, 1) = """JP"", ""MY"", ""PH"", ""SG"", ""VN""," Then 
      Cells(i, 13) = "Person3" 
     [..] 
     End If 
    Next i 
End Sub 
+0

löste mein Problem jetzt. Vielen Dank! – markerbean

Verwandte Themen