تحليل عمود من السلاسل باستخدام VBA
سؤال
أرغب في تحليل عمود الخلية من سلاسل في Excel VBA، تحتوي كل من الخلية على ما يلي:
2 '␂'
أرغب في تغيير محتويات هذه الخلية لاحتواء فقط 2 (أو أي شخصيات رقمية فقط قبل "السلسلة". ماذا ستكون أسهل طريقة لتحليل هذه المعلومات؟ شكرا.
المحلول
إذا كنت متأكدا من التنسيق، فابحث عن السلسلة قبل "(apostrophe) وتغيير قيمة الخلية. على افتراض أنك على الخلية التي تحتوي على هذه القيمة، استخدم رمز VBA التالي.
activecell.text = mid(activecell.text, 1, instr(1, activecell.Text, "'")-1)
يبحث عن النقاصي ومستخلص الأحرف قبل ذلك & يضعه في الخلية الحالية.
نصائح أخرى
على افتراض أن البيانات الرقمية هي دائما في بداية الخلية، يمكنك استخدام Regex للعثور على أي أرقام متتالية في بداية السلسلة، توقف بمجرد أن تضرب الأحرف الأولى غير الرقمية. إليك وظيفة ستفعلها من أجلك، آمل أن يساعدها. تقف ^ لبدء الخلية، و ( d +) تعني أحرف رقمية واحدة أو أكثر ووسائل. * يعني تليها حرف صفر أو أكثر. أفترض أن هناك سلسلة واحدة فقط من الأرقام التي تحتاجها، لذلك لدي Regex فقط RETORN SUMSACH 0 (المباراة الأولى).
Function ExtractNumericData(ByVal text As String) As String
Application.ScreenUpdating = False
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = "^(\d+).*"
RE.Global = True
Set allMatches = RE.Execute(text)
ExtractNumericData = allMatches.Item(0).submatches.Item(0)
Application.ScreenUpdating = True
End Function