2016-04-07 4 views
0

Iam neu zu Excel VBA, ich habe angefangen, einen Code zu schreiben, der gut ausgeführt wurde, aber ich brauche einen Vorschlag, wie ich eine Funktion schreibe, wo ich Code für alle "ID schreiben muss ".Einzelne Funktion zum Schreiben für alle Nachrichten-ID

Zum Beispiel: Ich habe Hauptarbeitsblatt mit ID (1000x, 10000, 2000X, 20000). Ich möchte nur ID mit der Nummer nicht mit Alphabet suchen, und vergleichen Sie es mit einem anderen Arbeitsblatt, mit der gleichen ID, wenn dann erhalten Sie die korrelierenden ID 3. Spalte Daten und alle sie in Hauptarbeitsblatt konacdenate.

Ich habe Hauptarbeitsblatt ("Tabelle1") mit der ganzen ID (10000,20000) in Spalte A, Ich möchte die Information von ID 10000 in Spalte B von ID 10000. Manchmal habe ich 10000 für vier mal. Möchten Sie Informationen in ein anderes Arbeitsblatt einfügen ("Test_2"), möchte ich alle 10000 und entsprechenden Daten sammeln.

Sub Update() 
If MsgBox("Are you sure that you wish to Update New Measurement ?", vbYesNo, "Confirm") = vbYes Then 
Dim erow As Long, erow1 As Long, i As Long 
erow1 = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row 

For i = 2 To erow1 
If Sheets("Tabelle1").Cells(i, 2) <> "10000" Then 
Sheets("Tabelle1").Range(Sheets("Tabelle1").Cells(i, 1), Sheets("Tabelle1").Cells(i, 2)).Copy 
Sheets("Test_2").Activate 
erow = Sheets("Test_2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

ActiveSheet.Paste Destination:=Sheets("Test_2").Range(Cells(erow, 1), Cells(erow, 2)) 
Sheets("Test_2").Activate 

End If 
Next i 
Application.CutCopyMode = False 


For i = 1 To erow 
Totalstrings = Totalstrings & Cells(i, 2) & "" + vbCrLf 
Next i 
Totalstrings = Left(Totalstrings, Len(Totalstrings) - 1) 
Range("C5") = Totalstrings 


Range("C5").Select 
Selection.Copy 
Sheets("BSM_STF_iO").Select 
Range("C5").Select 
ActiveSheet.Paste 
MsgBox "New measurements have been Updated !" 
End If 

End Sub 

Beispiel

In BSM: STM: IO

A B
ID
1000X
...

in Tab elle1
B C
ID
1000 abc
1000 xyz
10001 lmn
2000 def
" Ich möchte nur Ziffer von Vergleichen" der "BSM: STM: Io" mit "Tabelle1". Beispiel nimmt den den ersten Wert 10000 von "BSM_STM_io" Vergleichen mit tabele nehmen die den Wert von corrosponding Coloumn "C" in "tablle1" und es in einzelne Zelle in 1000 von BSM_STM: Io

  • A, B, C sind coloumn in dem Arbeitsblatt

enter image description here enter image description here

+0

Benutzer Spalte A ID mit dem gleichen Blatt B in Tabelle1 oder einem anderen Blatt? –

+0

Ich muss die Informationen ausfüllen, sagen wir mal im Arbeitsblatt ("BSM_STF_iO") wo alle Informationen im Arbeitsblatt ("Tabelle1") stehen. Ich muss die Suche mit ID in "BSM_STF_iO" mit "Tabelle1" wenn es übereinstimmt dann habe ich die Informationen von "Tabelle1" zu "BSM_STF_iO" – Dian007

Antwort

1

Arbeitsblatt Nehmen wir an, "BSM_STF_iO" enthält die ID-Informationen in einer Spalte mit A2 und Arbeitsblatt Tabelle1 beginnt, enthält die erforderliche concaetenation Informationen in B Spalte von B2 beginnen (ex: C Spalte B: IDs, Spalte C: Informationen zum konkatenieren). Unterhalb des Codes wird der Inhalt konkatiert und in das BSM_STF_iO-Blatt geschrieben.

Sub test1() 
Worksheets("BSM_STF_iO").Select 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
For i = 2 To LastRow 
    a = onlyDigits(Range("A" & i).Value) 
    With Worksheets("Tabelle1") 
     destlastrow = .Range("B" & Rows.Count).End(xlUp).Row 
     For j = 2 To destlastrow 
      If a = Trim(.Range("B" & j).Value) Then 
       If out <> "" Then 
        out = out & ", " & .Range("C" & j).Value 
       Else 
        out = .Range("C" & j).Value 
       End If 
      End If 
     Next j 
     Cells(i, 2) = out 
     out = "" 
    End With 
Next i 
End Sub 

und unterhalb Funktion von How to find numbers from a string? genommen

Function onlyDigits(s As String) As String 
    Dim retval As String 
    Dim i As Integer 
    retval = "" 
    For i = 1 To Len(s) 
     If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then 
      retval = retval + Mid(s, i, 1) 
     End If 
    Next 
    onlyDigits = retval 
End Function 
+0

kopiert es hat gut funktioniert, aber ich brauche kleine Änderungen, ich habe Update als Beispiel in Main . Kannst du bitte nachsehen.Noch einmal funktioniert Ihr Code gut – Dian007

+0

können Sie bitte einige Ausgaben für Ihr Beispiel freigeben. –

+0

Könnten Sie bitte klarstellen, warum die reuslts in BSM_STM_io auf 1000 gesetzt werden sollen? während wir die Ergebnisse bekommen 10000 ID –

Verwandte Themen