لتحقيق هذه الوظيفة في VBA، يمكنك استخدام الكود التالي:
مقالات ذات صلة
vbaSub CopyWordsStartingWithAcc() Dim ws As Worksheet Dim lastRow As Long, i As Long, j As Long ' Set the worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' تأكد من استبدال "Sheet1" باسم ورقة العمل الصحيحة ' Find the last row with data in column A lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Initialize j to start copying into column B j = 2 ' Loop through each row in column A For i = 2 To lastRow ' Check if the cell in column A starts with "Acc" If Left(ws.Cells(i, 1).Value, 3) = "Acc" Then ' Copy the value to column B ws.Cells(j, 2).Value = ws.Cells(i, 1).Value j = j + 1 ' Check if the next row does not start with "Acc" If Left(ws.Cells(i + 1, 1).Value, 3) <> "Acc" Then ' Copy the value above ws.Cells(j, 2).Value = ws.Cells(j - 1, 2).Value j = j + 1 End If End If Next i End Sub
يرجى ملاحظة أن هذا الكود يفترض أن البيانات تبدأ من الصف الثاني والعملية تتوقف عندما يكون الخلية في العمود A فارغة. كما يجب استبدال “Sheet1” بالاسم الصحيح لورقة العمل التي تعمل عليها.
المزيد من المعلومات
بالطبع، هنا بعض المعلومات الإضافية حول الكود:
- الكود يستخدم الدالة
Left
لفحص ما إذا كانت الكلمة التي تبدأ في الخلية في العمود A تبدأ بـ “Acc”. - إذا وجدت كلمة تبدأ بـ “Acc” في الخلية في العمود A، يتم نقل هذه الكلمة إلى العمود B في الصف المحدد بمتغير j.
- إذا كانت الكلمة التالية في الصف التالي لا تبدأ بـ “Acc”، يتم نسخ الكلمة الموجودة في الخلية السابقة في العمود B إلى الصف التالي.
- تستمر هذه العملية حتى يتم الوصول إلى خلية فارغة في العمود A.
يرجى تعديل اسم الورقة (Sheet1
) إذا كان اسم الورقة الذي تعمل عليها مختلفًا.