Πώς να συνδέσετε συμβολοσειρά και μεταβλητή στο Excel VBA (Λεπτομερής ανάλυση)

  • Μοιραστείτε Αυτό
Hugh West

Ενώ εργάζεται με VBA στο Excel, πρέπει συχνά να συνδέουμε συμβολοσειρά (s) και μεταβλητή (s) σε ένα φύλλο εργασίας. Η σύνδεση συμβολοσειράς (s) και μεταβλητής (s) χρησιμοποιείται ευρέως σχεδόν σε όλους τους τομείς στις εργασίες μας, ξεκινώντας από τη σύνοψη των αποτελεσμάτων των μαθητών μέχρι την ανάλυση μιας σύνθετης επιχείρησης. Σε αυτό το άρθρο, θα σας δείξω πώς μπορείτε να συνδέσετε συμβολοσειρά (s) και μεταβλητή (s) σε ένα φύλλο εργασίας με το VBA στο Excel. Θα εξηγήσω τα πράγματα με κατάλληλα παραδείγματα και εικόνες.

Συνδέστε συμβολοσειρά (s) και μεταβλητή (s) στο Excel VBA (Γρήγορη προβολή)

Κατεβάστε το βιβλίο ασκήσεων

Κατεβάστε αυτό το τετράδιο ασκήσεων για να εξασκηθείτε ενώ διαβάζετε αυτό το άρθρο.

Συνδέστε συμβολοσειρά και Variable.xlsm

Συνδέστε συμβολοσειρά (s) και μεταβλητή (s) στο Excel VBA (Ανάλυση βήμα προς βήμα)

Πρώτα απ' όλα, ας δούμε πώς μπορούμε να συνδέσουμε το αλφαριθμητικό (s) και τη μεταβλητή (s) στο VBA βήμα προς βήμα.

⧪ Συνένωση συμβολοσειράς (s):

Για να συνδέσετε δύο ή περισσότερες συμβολοσειρές σε VBA , μπορείτε να χρησιμοποιήσετε τόσο την αριθμητική προσθήκη (+) και το σύμβολο Αμπερσάντ (&, ) σύμβολο.

Για παράδειγμα, για να συνδέσετε τις συμβολοσειρές "Μεγάλες προσδοκίες" και "Μια ιστορία δύο πόλεων" με ένα κόμμα , μπορείτε να χρησιμοποιήσετε:

 New_String = "Μεγάλες προσδοκίες" + ", " + "Μια ιστορία δύο πόλεων" 

Ή,

 New_String = "Μεγάλες προσδοκίες" & ", " & "Μια ιστορία δύο πόλεων" 

Εκτελέστε οποιονδήποτε από τους παραπάνω κώδικες. Θα εμφανιστεί η συνδεδεμένη έξοδος, Μεγάλες προσδοκίες, Μια ιστορία δύο πόλεων .

⧪ Συνδέοντας μεταβλητή (s)

Εάν όλες οι μεταβλητές περιέχουν τιμές συμβολοσειράς, τότε μπορείτε να χρησιμοποιήσετε και τις δύο αριθμητικές προσθήκη (+) και το σύμβολο Αμπερσάντ (&) σύμβολο.

Αλλά αν δεν το κάνουν, τότε μπορείτε να χρησιμοποιήσετε μόνο το Αμπερσάντ (&) σύμβολο για τη συνένωση.

Για παράδειγμα, ας έχουμε δύο μεταβλητές, A και B .

A περιέχει μια συμβολοσειρά, "Μια ιστορία δύο πόλεων" , και B περιέχει μια άλλη συμβολοσειρά, "Οι σαράντα κανόνες της αγάπης" .

Μπορείτε να χρησιμοποιήσετε και τα δύο προσθήκη (+) σύμβολο και Αμπερσάντ (&) σύμβολο για να τα συνδέσετε.

 A = "Μια ιστορία δύο πόλεων" B = "Οι σαράντα κανόνες της αγάπης" New_String = A + ", " + B 

Ή,

 A = "Μια ιστορία δύο πόλεων" B = "Οι σαράντα κανόνες της αγάπης" New_String = A & ", " & B 

Και στις δύο περιπτώσεις, θα επιστρέψουν το συνυφασμένο αλφαριθμητικό.

Αλλά αν A είναι μια συμβολοσειρά ( "Μια ιστορία δύο πόλεων" ) και B είναι ακέραιος ( 27 ), πρέπει να χρησιμοποιήσετε το Αμπερσάντ (&) σύμβολο για τη συνένωση.

 A = "Μια ιστορία δύο πόλεων" B = 27 New_String = A & ", " & B 

Θα επιστρέψει τη συνδεδεμένη έξοδο.

Παραδείγματα για τη συνένωση συμβολοσειρών και μεταβλητών στο Excel VBA (που περιλαμβάνει μακροεντολές, UDF και UserForm)

Μάθαμε να συνδέουμε συμβολοσειρές (s) και μεταβλητές (s) με την εντολή VBA στο Excel. Αυτή τη φορά θα εξερευνήσουμε μερικά παραδείγματα που αφορούν τη συνένωση συμβολοσειράς (s) και μεταβλητής (s) με VBA .

Παράδειγμα 1: Ανάπτυξη μιας μακροεντολής για τη συνένωση συμβολοσειράς (s) και μεταβλητής (s) στο Excel VBA

Έχουμε μάθει να συνδέουμε συμβολοσειρές και μεταβλητές με το VBA . Αυτή τη φορά θα αναπτύξουμε ένα Μάκρο για τη συνένωση συμβολοσειρών και μεταβλητών πολλαπλών στηλών σε ένα φύλλο εργασίας.

Εδώ έχουμε ένα σύνολο δεδομένων με ονόματα βιβλίων , συγγραφείς , και τιμές κάποιων βιβλίων ενός βιβλιοπωλείου που ονομάζεται Martin Bookstore.

Ας αναπτύξουμε ένα Μάκρο για να συνδέσετε στήλες 1, 2, και 3 του συνόλου δεδομένων B4:D14 στο κελί F4 .

Το VBA ο κωδικός θα είναι:

⧭ Κώδικας VBA:

 Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = ", " Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Number If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)))& Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭ Έξοδος:

Εκτελέστε αυτόν τον κώδικα. 3 στήλες συνδεδεμένες στο εύρος F4:F14.

Διαβάστε περισσότερα: Μακροεντολή για τη συνένωση πολλαπλών στηλών στο Excel (με UDF και UserForm)

Παράδειγμα 2: Δημιουργία μιας συνάρτησης που ορίζεται από το χρήστη για τη συνένωση συμβολοσειράς (s) και μεταβλητής (s) στο Excel VBA

Μάθαμε να αναπτύσσουμε ένα Μάκρο για να συνδέσουμε πολλαπλές στήλες ενός συνόλου δεδομένων. Αυτή τη φορά θα δημιουργήσουμε ένα Λειτουργία που ορίζεται από τον χρήστη για να συνδέσετε συμβολοσειρές ή μεταβλητές στο Excel.

Η πλήρης VBA ο κωδικός θα είναι:

⧭ Κώδικας VBA:

 Function ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & Separator & Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) &,Separator &? Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & Separator & Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function 

⧭ Έξοδος:

Επιλέξτε τη στήλη στην οποία θέλετε να συνδέσετε το εύρος και εισαγάγετε αυτόν τον τύπο:

=ConcatenateValues("She", "H. Rider Haggard",", ")

Θα επιστρέψει Αυτή, H. Rider Haggard ως έξοδο.

Εισάγετε και πάλι τον τύπο:

=ConcatenateValues(B4:B14,30,", ")

[ Τύπος συστοιχίας Μην ξεχάσετε λοιπόν να πατήσετε CTRL + SHIFT + ENTER εκτός αν βρίσκεστε σε Office 365 .]

Θα συνδέσει το 30 με όλες τις τιμές του εύρους B4:B14 .

Τέλος, πληκτρολογήστε:

=ConcatenateValues(B4:B14,C4:C14,", ")

[Και πάλι Τύπος συστοιχίας Μην ξεχάσετε λοιπόν να πατήσετε CTRL + SHIFT + ENTER εκτός αν βρίσκεστε σε Office 365 .]

Θα συνδέσει όλες τις τιμές του εύρους B4:B14 με εκείνες της C4:C14 .

Διαβάστε περισσότερα: Πώς να συνδέσετε τα στοιχεία στο Excel (3 κατάλληλοι τρόποι)

Παρόμοιες αναγνώσεις:

  • Πώς να συνδυάσετε κείμενο από δύο ή περισσότερα κελιά σε ένα κελί στο Excel (5 μέθοδοι)
  • Συνδυασμός σειρών σε ένα κελί στο Excel
  • Συνδέστε αριθμούς στο Excel (4 γρήγοροι τύποι)
  • Συνδυασμός κειμένου στο Excel (8 κατάλληλοι τρόποι)
  • Πώς να συνδέσετε την απόστροφο στο Excel (6 εύκολοι τρόποι)

Παράδειγμα 3: Ανάπτυξη ενός UserForm για τη συνένωση συμβολοσειράς (s) και μεταβλητής (s) σε διαφορετικό φύλλο εργασίας στο Excel VBA

Μάθαμε να αναπτύσσουμε ένα Μάκρο και ένα Λειτουργία που ορίζεται από τον χρήστη για τη συνένωση συμβολοσειρών και τιμών. Τέλος, θα αναπτύξουμε ένα UserForm για να συνδέσετε συμβολοσειρές και τιμές στην επιθυμητή θέση του επιθυμητού φύλλου εργασίας.

⧪ Βήμα 1: Εισαγωγή του UserForm

Πηγαίνετε στο Εισαγωγή> UserForm στην επιλογή VBA γραμμή εργαλείων για να εισαγάγετε ένα νέο UserForm .

⧪ Βήμα 2: Σύρσιμο εργαλείων στη φόρμα χρήστη

A UserForm που ονομάζεται UserForm1 θα ανοίξει, μαζί με ένα Εργαλειοθήκη που ονομάζεται Έλεγχος .

Μετακινήστε το ποντίκι σας πάνω e Toolbox και σύρετε 2 ListBoxes, 5 TextBoxes, 7 Labels και1 CommanButtons στο UserForm .

Αλλάξτε τις ενδείξεις των Ετικέτες όπως φαίνεται στο σχήμα.

Ομοίως, αλλάξτε την εμφάνιση του CommandButton στο OK .

⧪ Βήμα 3: Γράφοντας κώδικα για το TextBox1

Κάντε διπλό κλικ στο TextBox1 . A Ιδιωτική υποδιαδικασία που ονομάζεται TextBox1_Change Εισάγετε εκεί τον ακόλουθο κώδικα.

 Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub 

⧪ Βήμα 4: Γράφοντας κώδικα για το TextBox3

Ομοίως, κάντε διπλό κλικ στο TextBox3 . Ιδιωτική υποδιαδικασία που ονομάζεται TextBox3_Change Εισάγετε εκεί τον ακόλουθο κώδικα.

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Str(Int(Row) +Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10)) - 1) Set Rng = Range(Starting_Cell + ":" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Task: x = 5 End Sub 

⧪ Βήμα 5: Συγγραφή κώδικα για το TextBox4

Επίσης, κάντε διπλό κλικ στο TextBox3 . Ιδιωτική υποδιαδικασία που ονομάζεται TextBox3_Change Εισάγετε εκεί τον ακόλουθο κώδικα.

 Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Βήμα 6: Συγγραφή κώδικα για το ListBox2

Στη συνέχεια, κάντε διπλό κλικ στο ListBox2 . Όταν το Ιδιωτική υποδιαδικασία που ονομάζεται ListBox2_Click ανοίγει, πληκτρολογήστε αυτόν τον κωδικό εκεί.

 Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next If If If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Βήμα 7: Γράφοντας κώδικα για το CommanButton1

Επίσης, κάντε διπλό κλικ στο CommandButton1 . Μετά το Ιδιωτική υποδιαδικασία που ονομάζεται CommandButton1_Change ανοίγει, εισάγετε τον ακόλουθο κώδικα εκεί.

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Separator = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) &- Separator Else Output = Output &- Rng.Cells(i, Int(Column_Numbers(j)) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Επιλέξτε όλες τις επιλογές σωστά.", vbExclamation End Sub 

⧪ Βήμα 7: Συγγραφή κώδικα για την εκτέλεση της Φόρμας Χρήστη

Τώρα είναι το τελευταίο βήμα. Εισάγετε ένα νέο Ενότητα από το VBA γραμμή εργαλείων και εισάγετε τον ακόλουθο κώδικα.

 Sub Run_UserForm() UserForm1.Caption = "Συναρμολόγηση τιμών" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub 

⧪ Βήμα 8: Εκτέλεση του UserForm

Το σας UserForm είναι πλέον έτοιμη για χρήση. Για να την εκτελέσετε, επιλέξτε το σύνολο δεδομένων από το φύλλο εργασίας (συμπεριλαμβανομένου του Κεφαλίδες ) και εκτελέστε το Μάκρο που ονομάζεται Run_UserForm .

Το UserForm Η επιλεγμένη διεύθυνση περιοχής θα εμφανιστεί στο πεδίο TextBox1 ( B3:D4 εδώ). Εάν θέλετε, μπορείτε να το αλλάξετε. Η επιλεγμένη περιοχή στο φύλλο εργασίας θα αλλάξει.

Επιλέξτε τις στήλες που θέλετε να συναθροίσετε από το πλαίσιο Στήλες για Concat ListBox. Εδώ έχω επιλέξει Όνομα βιβλίου και Τιμή .

Εισάγετε το Διαχωριστής . Εδώ έχω εισέλθει σε ένα κόμμα ( , ).

Επιλέξτε το όνομα του φύλλου εργασίας στο οποίο θέλετε να τοποθετήσετε τη συνυφασμένη περιοχή από το πλαίσιο Συνδεδεμένο σε listbox. Εδώ έχω εισάγει Φύλλο3 .

(Τη στιγμή που επιλέγετε το φύλλο, θα ενεργοποιηθεί, ακόμη και αν δεν είναι το ενεργό φύλλο.)

Στη συνέχεια τοποθετήστε το Θέση εξόδου Είναι η αναφορά κελιού του πρώτου κελιού της συνδεδεμένης περιοχής. Εδώ έχω βάλει B3 .

(Τη στιγμή που μπαίνετε στο Θέση εξόδου , θα επιλεγεί το εύρος εξόδου).

Και τέλος, πληκτρολογήστε το όνομα του Κεφαλίδα εξόδου (Επικεφαλίδα της περιοχής εξόδου). Εδώ έχω βάλει Συνδεδεμένη σειρά .

(Τη στιγμή που βάζετε το Κεφαλίδα εξόδου , θα οριστεί η επικεφαλίδα της στήλης εξόδου.)

Κάντε κλικ στο OK Θα έχετε την επιθυμητή έξοδο στην επιθυμητή θέση.

Διαβάστε περισσότερα: Πώς να συνδέσετε συμβολοσειρά και ακέραιο αριθμό με τη χρήση της VBA

Συμπέρασμα

Αυτά είναι μερικά παραδείγματα στα οποία μπορείτε να χρησιμοποιήσετε το Excel VBA για τη συνένωση συμβολοσειρών και μεταβλητών. Ελπίζω τα παραδείγματα να σας έκαναν τα πάντα αρκετά κατανοητά. Έχετε ερωτήσεις; Μη διστάσετε να μας ρωτήσετε. Και μην ξεχάσετε να επισκεφθείτε τον ιστότοπό μας ExcelWIKI για περισσότερες αναρτήσεις και ενημερώσεις.

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.