گرت پرسید آیا راهی برای تبدیل سریع داده های متنی به داده های عددی وجود دارد؟ او در حال وارد کردن یک فایل متنی است که به جای کاما (1256) از فاصله در هزاران مکان (1 256) استفاده می کند.
راه های مختلفی برای برخورد با این مشکل وجود دارد. اولین مورد این است که منبع مشکل را درک کنید. فایل متنی احتمالاً در سیستمی ایجاد شده است که از استاندارد متریک پیروی می کند. برخی کشورها با پیروی از استاندارد متریک، به جای کاما از فاصله برای جداکننده هزاران استفاده می کنند. بنابراین، اگر تنظیمات منطقه ای خود را در ویندوز قبل از شروع اکسل و انجام واردات تغییر دهید، می توانید فایل را به درستی به اکسل وارد کنید. با استفاده از کنترل پنل می توانید تنظیمات منطقه ای را تغییر دهید.
اگر نمی خواهید تنظیمات منطقه ای سیستم خود را تغییر دهید، روش های دیگری نیز وجود دارد که می توانید اتخاذ کنید. پس از اینکه اکسل اطلاعات را وارد کرد، می توانید محدوده سلول های حاوی اعداد را انتخاب کنید و به سادگی جستجو و جایگزینی کنید. شما به دنبال یک فضای واحد هستید و آن را با هیچ چیز جایگزین نمی کنید. این کار فضا را کاملاً از بین می برد و اکسل سپس محتویات سلول را به عنوان یک عدد در نظر می گیرد.
همچنین در صورت تمایل می توانید از فرمولی برای اصلاح داده های وارد شده استفاده کنید. به عنوان مثال، اگر عدد وارد شده (شامل یک فاصله) در سلول A3 باشد، می توانید از این فرمول برای حذف فاصله استفاده کنید:
=1*SUBSTITUTE(A3," ","")
توجه داشته باشید که بین اولین مجموعه نقل قول ها فاصله وجود دارد و بین مجموعه دوم نقل قول ها چیزی وجود ندارد.
اگر مقدار کمی داده برای تبدیل دارید، یا اگر متنی با سلول های «فقط اعداد» در هم آمیخته است، ممکن است تصمیم بگیرید از یک ماکرو برای انجام تبدیل استفاده کنید. ماکرو زیر روی انتخابی که قبل از فراخوانی انتخاب می کنید کار می کند. همچنین بررسی می کند تا مطمئن شود سلول - پس از حذف فاصله ها - حاوی مقدار عددی است. اگر نشد، پس هیچ تبدیلی انجام نمی شود.
Sub ClearSpacesIfNumeric()
Dim c As Range Cell under examination
Dim tmpText As String Cell contents without spaces
Dim i As Integer Simple counter
For Each c In Selection
tmpText = "" Initialize
Check each character to see if its a space
If it isnt, add it to tmpText
For i = 1 To Len(c.Text)
If Mid(c.Text, i, 1) <> " " Then
tmpText = tmpText & Mid(c.Text, i, 1)
End If
Next i
tmpText is now the cell contents without spaces
If tmpText is a number, assign its value to
the current cell
If IsNumeric(tmpText) Then
c.Value = tmpText
End If
Next c
End Sub