2017-12-08 3 views
0

Ich habe einige Code, der derzeit Spalte A für die Erwähnung von 27 durchsucht und kopiert die Zellen in Spalte B, die gleiche Zeile wie 27 in Spalte C. Gibt es eine Möglichkeit, diesen Code zu ändern um die Werte von Zellen zu kopieren, wenn 27 nicht in Spalte A ist. Macht das Sinn?Suche Zelle für keine Erwähnung einer bestimmten Zeichenfolge

Das Beispielarbeitsblatt enthält die Nummer 27 in Zellen (A1: A30) und die Nummer 1 in Zellen (B1: B30); außer in A5, wo es 28 ist, und B5, wo es 2 ist. Ich weiß, in diesem Fall könnte ich nach 28 suchen, aber der Hauptgrund für diesen Code ist, dass es mehr als 1 Wert geben wird, der unterschiedlich sein könnte, dh a 26 oder 22, sowie 30 etc.

Als ich darüber nachdachte, nahm ich an, dass ich die Zeile If Not foundCel Is Nothing Then auf etwas anderes ändern musste, aber ich könnte hier den falschen Baum bellen.

Option Explicit 

Sub Button1_Click() 

    Dim v As Long 

    v = 1 
    findStr = "27" 
    Set foundCel = Range("A:A").Find(What:=findStr) 

    If Not foundCel Is Nothing Then    'Yes' 

     firstAddress = foundCel.Address 

     Do 

      Range("C" & v).Value = foundCel.Offset(0, 1).Value 
      Set foundCel = Range("A:A").FindNext(foundCel) 
      v = v + 1 

     Loop While Not foundCel Is Nothing And foundCel.Address <> firstAddress 

    End If 

End Sub 

Danke für jede Hilfe, die Sie zur Verfügung stellen können.

+0

Ihre einzige Frage ist 'Ist das sinnvoll?'. Die Antwort ist ja. Aber was Sie wahrscheinlich wollen, ist zu überprüfen, wie man Else-Klausel verwendet und wie man bessere Fragen stellt. Es gibt eine hilfreiche FAQ hier auf SO über die spätere und eine Reihe von großartigen Erklärungen im Internet über die ehemalige. –

+0

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe, aber ich denke, dass Sie in die 'Instr'-Funktion schauen sollten. Es durchsucht eine Zeichenfolge nach einer vordefinierten Zeichenfolge. Wenn die Suchzeichenfolge nicht gefunden wird, wird eine 0 zurückgegeben. Sie können angeben, dass der Wert von "instr" gleich 0 ist oder nicht. – Jarom

+0

@VictorK Ich will nicht unhöflich oder so klingen, aber '' Macht das Sinn? "' Bezieht sich auf den Satz, der vorher einen Weg zur Suche nach dem 'nicht'-Fall regradet. Hat das mehr geklärt? Es tut mir leid, wenn ich als unhöflich rüberkommen – CptGoodar

Antwort

1

Hier gehen Sie, Tests für 27 nicht in der Kette von column1 (A) vorhanden sind, wenn es nicht kopiert column2 (B) column3 (C):

Private Sub Button1_Click() 

'Searches all text in Column 2 on a Sheet for the string located in Column 1 

Dim ThisWB As Workbook 
Dim ThisWS As Worksheet 
Dim i As Integer 

Dim Col1 As Double 
Dim Col2 As Double 
DIM Col3 As Double 


Dim Col1_rowSTART As Double 
Dim Col1_rowEND As Double 



Dim strTest As String 


'Set up parameter that we know 
Set ThisWB = ActiveWorkbook 
Set ThisWS = ActiveSheet 
Col1 = 1 
Col2 = 2 
Col3 = 3 
strTest = "27" 
'Define Starting Row for each column 
Col1_rowSTART = 1 

'Define ending row for each column 
Col1_rowEND = ThisWS.Cells(ThisWS.Rows.Count, Col1).End(xlUp).Row 


For i = Col1_rowSTART To Col1_rowEND 
    'make a string out of each cell value in Col1 
    'Check if 27 is NOT in the cell string being tested 
    'to test if it IS change to > 0 
    If InStr(CStr(ThisWS.Cells(i, Col1)), strTest) = 0 Then 
      ThisWS.Cells(i, Col3).Value = ThisWS.Cells(i, Col2) 
    End If 

Next i 

MsgBox ("27 Search Complete!") 

End Sub 

Schnell und schmutzig. Prost. -WWC

+0

Ich denke, das ist was du willst, es benutzt InStr für den Test. Gibt 0 zurück, wenn sie nicht in der Zeichenfolge enthalten ist. Gibt> 0 zurück, wenn es in der Zeichenfolge enthalten ist. -WWC –

Verwandte Themen