جان یک کاربرگ دارد که در ستون A تعداد زیادی رشته متن بسیار طولانی دارد. او باید 249 کاراکتر اول را به صورت جداگانه از هر رشته بکشد و یک کاراکتر را در هر سلول در سمت راست رشته قرار دهد.
چند راه وجود دارد که می توانید این کار را انجام دهید. این کار با استفاده از یک فرمول ساده بسیار آسان است. به عنوان مثال، اگر اولین رشته متن شما در سلول A1 است، فرمول زیر را در سمت راست آن، در سلول B1 قرار دهید:
=MID($A1,COLUMN()-1,1)
این فرمول از توابع کاربرگ اکسل برای جدا کردن رشته متن استفاده می کند. تابع COLUMN، در این مورد، مقدار 2 را برمی گرداند زیرا فرمول در ستون B است و آن ستون دوم در کاربرگ است. این مقدار با 1 کاهش می یابد، و سپس به عنوان یک اشاره گر در رشته در سلول A1 استفاده می شود، و مشخص می کند که کاراکتر استخراج شده باید از کجا آمده باشد. وقتی این فرمول را درست کپی می کنید، برای سلول های دلخواه، به ترتیب متوالی کاراکترهای جداگانه ای از رشته را دریافت می کنید.
البته، اگر تعداد کمی رشته در کاربرگ دارید (همانطور که جان انجام می دهد)، کپی کردن این فرمول در 249 ستون و مثلاً چند صد سطر، می تواند یک کاربرگ بسیار کند ایجاد کند. در چنین شرایطی ممکن است استفاده از ماکرو برای جدا کردن رشته ها به جای فرمول مطلوب باشد. ماکرو زیر، SplitUp، یکی از روش هایی است که می توان از هم جدا کرد.
Sub SplitUp()
Dim c As Range
Dim r As Range
Dim sTemp As String
Dim z As Integer
Set r = Range("A1", Range("A1048576").End(xlUp))
For Each c In r
sTemp = Left(c, 249)
For z = 1 To Len(sTemp)
c.Offset(0, z) = Mid(sTemp, z, 1)
Next z
Next
End Sub
ماکرو با تعریف یک محدوده (r) شروع می شود که شامل تمام سلول های ستون A است که حاوی مقادیر هستند. سپس از متغیر c برای نشان دادن هر سلول در محدوده استفاده می شود و 249 کاراکتر اول از هر سلول استخراج می شود. حلقه بعدی برای ... سپس برای بیرون کشیدن هر کاراکتر از رشته و قرار دادن آن در سلولی در سمت راست رشته استفاده می شود.