PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [حل شده] محاسبه تعداد کلمات با چند هزار سطر



fo-eng
2015/10/23, 16:11
سلام. وقت بخیر.
ببخشید اگر بالای 6 هزار سطر داشته باشیم که در سلول یا خانه اول هر سطر، جمله ای نوشته شده باشد و بخواییم تک تک کلمات و تعداد تکرار کلمات را بصورت مجزا استخراج کنیم چکار باید کنیم و بهتر است از چه تابعی استفاده کنیم؟
آیا بهینه می باشد از اکسل استفاده کنیم یا بهتر هستش بریم سراغ زبان های برنامه نویسی و از اونها کمک بگیریم؟

generalsamad
2015/10/23, 16:43
با سلام
شما با استفاده از تابع countif و همچنین با استفاده از pivot table میتونید به جواب برسید
راه پیشنهادی من استفاده از pivot table در اکسل هست

fo-eng
2015/10/24, 00:00
اگر امکان داره کمی با جزئیات بیشتر راهنمایی بفرمایید؟

Amir Ghasemiyan
2015/10/24, 08:56
سلام. وقت بخیر.
ببخشید اگر بالای 6 هزار سطر داشته باشیم که در سلول یا خانه اول هر سطر، جمله ای نوشته شده باشد و بخواییم تک تک کلمات و تعداد تکرار کلمات را بصورت مجزا استخراج کنیم چکار باید کنیم و بهتر است از چه تابعی استفاده کنیم؟
آیا بهینه می باشد از اکسل استفاده کنیم یا بهتر هستش بریم سراغ زبان های برنامه نویسی و از اونها کمک بگیریم؟

سلام دوست عزیز
برای جدا کردن کلمات یک جمله میتونین از از تب data گزینه text to column استفاده کنید
برای شمارش هر کلمه هم همونطور که صمد عزیز گفت میتونین از countif کمک بگیرین

اگر نیاز به توضیح بیشتر هست بفرمایید.

fo-eng
2015/10/24, 12:40
بله سپاسگذارم از پاسخ گویی هر دو بزرگوار.
خب من بوسیله text to column هر کلمه رو جدا کردم. حالا می خوام خودش برام فرضا در یک شیت دیگه یا مثلا آخرین سلول شیت جاری بیاد و هر کدوم از این کلمات رو جدا بنویسه و تعداد تکرارش هم زیرش بنویسه!
میشه با countif برام مثال بزنید>. ببینید منظورم این هست که من فرضا نمی تونم بیام به countif بگم بیا برام این کلمه رو پیدا کن، می خوام اکسل خودش کلمات رو بگیره و تعداد تکرارش رو بده، چون من اگر فرضا بخوام با این دستور
=COUNTIF(A1:H1;"hello")

به اکسل بگم برو و این کلمه رو پیدا و فرضا بخوام برای هر کلمه این 6 هزار سطر این کار رو کنم خیلی طول میکشه! راه حلی نیست که زودتر بشه ان کار رو کرد؟
اینم فایلم که ستون بندیش کردم : eeditfile (http://s6.picofile.com/file/8218850042/eeditfile.csv.html)
ممنون

fo-eng
2015/10/24, 12:52
دوستان از طریق wordcount هم میشه! اگر از این تابع اطلاعی دارید ممنون میشم در اختیارم بگذارید! برای من کار نکرد! :(

Amir Ghasemiyan
2015/10/24, 14:37
دوستان از طریق wordcount هم میشه! اگر از این تابع اطلاعی دارید ممنون میشم در اختیارم بگذارید! برای من کار نکرد! :(

اون لینکی که به من دادین و این تابع که میگین از کدنویسی vba استفاده شده. ربطی به توابع اکسل نداره. اگر میخواین اون رو براتون توضیح بدم

Amir Ghasemiyan
2015/10/24, 14:40
بله سپاسگذارم از پاسخ گویی هر دو بزرگوار.
خب من بوسیله text to column هر کلمه رو جدا کردم. حالا می خوام خودش برام فرضا در یک شیت دیگه یا مثلا آخرین سلول شیت جاری بیاد و هر کدوم از این کلمات رو جدا بنویسه و تعداد تکرارش هم زیرش بنویسه!
میشه با countif برام مثال بزنید>. ببینید منظورم این هست که من فرضا نمی تونم بیام به countif بگم بیا برام این کلمه رو پیدا کن، می خوام اکسل خودش کلمات رو بگیره و تعداد تکرارش رو بده، چون من اگر فرضا بخوام با این دستور
=COUNTIF(A1:H1;"hello")

به اکسل بگم برو و این کلمه رو پیدا و فرضا بخوام برای هر کلمه این 6 هزار سطر این کار رو کنم خیلی طول میکشه! راه حلی نیست که زودتر بشه ان کار رو کرد؟
اینم فایلم که ستون بندیش کردم : eeditfile (http://s6.picofile.com/file/8218850042/eeditfile.csv.html)
ممنون

یک فایل خام با 100 تا سطر بهم بدین راهشو بهتون بگم بعد خودتون انجام بدین
درضمن اگر میخواین خود اکسل بیاد براتون همه کار رو اتومات انجام بده باید کدنویسی کنین

fo-eng
2015/10/24, 15:01
یک فایل خام با 100 تا سطر بهم بدین راهشو بهتون بگم بعد خودتون انجام بدین
درضمن اگر میخواین خود اکسل بیاد براتون همه کار رو اتومات انجام بده باید کدنویسی کنین

سپاسگذارم از لطف شما.
بفرمایید: editfile - Copy (http://s3.picofile.com/file/8218866342/editfile_Copy.csv.html)

Amir Ghasemiyan
2015/10/24, 19:44
سپاسگذارم از لطف شما.
بفرمایید: editfile - Copy (http://s3.picofile.com/file/8218866342/editfile_Copy.csv.html)

همون فایل قبلی بهتر بود. راحت تر میشد روش کار کرد
دوست عزیز چون حجم فایل شما خیلی زیاده من به عنوان نمونه 100 جمله اول رو درست کردم. شما این رو بسط بدین به کل کدتون

ابتدا یک کد کوتاه نوشتم که همه کلمات رو بصورت یکتا در یک ستون بنویسه.


Sub PureData()
For i = 1 To 100
1:
If Cells(i, 2).Text = "" Then
Cells(i, 1).Copy
Sheet2.Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
i = i + 1
GoTo 1
End If
Sheet1.Range(Cells(i, 1), Cells(i, 1).End(xlToRight)).Copy
Sheet2.Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, , , True
Next i
Sheet2.Activate
Add = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Address
Sheet2.Range(Add).RemoveDuplicates Columns:=1, Header:=xlNo
Rows("1:1").Delete Shift:=xlUp
End Sub




شما خودتون کدنویسی بلدین. فقط کافیه قسمت قرمز شده رو تغییر بدین


بعد برای محاسبه تعداد تکرار از فرمول زیر استفاده کنید

=COUNTIF(database;A1)

برای اینکه راحت تر منظورم رو متوجه بشید یک فایل ضمیمه میکنم

fo-eng
2015/10/24, 21:33
همون فایل قبلی بهتر بود. راحت تر میشد روش کار کرد
دوست عزیز چون حجم فایل شما خیلی زیاده من به عنوان نمونه 100 جمله اول رو درست کردم. شما این رو بسط بدین به کل کدتون

ابتدا یک کد کوتاه نوشتم که همه کلمات رو بصورت یکتا در یک ستون بنویسه.


Sub PureData()
For i = 1 To 100
1:
If Cells(i, 2).Text = "" Then
Cells(i, 1).Copy
Sheet2.Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
i = i + 1
GoTo 1
End If
Sheet1.Range(Cells(i, 1), Cells(i, 1).End(xlToRight)).Copy
Sheet2.Range("A1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues, , , True
Next i
Sheet2.Activate
Add = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Address
Sheet2.Range(Add).RemoveDuplicates Columns:=1, Header:=xlNo
Rows("1:1").Delete Shift:=xlUp
End Sub




شما خودتون کدنویسی بلدین. فقط کافیه قسمت قرمز شده رو تغییر بدین


بعد برای محاسبه تعداد تکرار از فرمول زیر استفاده کنید

=COUNTIF(database;A1)

برای اینکه راحت تر منظورم رو متوجه بشید یک فایل ضمیمه میکنم

عذر می خوام شما وارد محیط کدنویسی اکسل می شید و درون ماژول این کد رو می نویسید.
بعد در خود محیط اکسل چطور روش کار می کنید؟
اینکه اومدید هر کلمه رو درون یک سلول نوشتید و تعداد تکرارش رو روبروش مشخص کردید؟ این چطوری میشه؟
منم اومدم در محیط کدنویسی کد شما رو نوشتم و بعد رفتم روبروی اولین خانه این کد رو نوشتم: =COUNTIF(database;A1)
ولی خطا داد! کار دیگری هم باید انجام میدادم؟

Amir Ghasemiyan
2015/10/24, 21:52
عذر می خوام شما وارد محیط کدنویسی اکسل می شید و درون ماژول این کد رو می نویسید.
بعد در خود محیط اکسل چطور روش کار می کنید؟
اینکه اومدید هر کلمه رو درون یک سلول نوشتید و تعداد تکرارش رو روبروش مشخص کردید؟ این چطوری میشه؟
منم اومدم در محیط کدنویسی کد شما رو نوشتم و بعد رفتم روبروی اولین خانه این کد رو نوشتم: =COUNTIF(database;A1)
ولی خطا داد! کار دیگری هم باید انجام میدادم؟

من فکر کردم شما با این محیط آشنایی مقدماتی دارین
اول از همه کل محدوده ای که کلمات هستند رو انتخاب کنید. بعد یک نام مثلا database براشون تعریف کنین
بعد برین تو محیط برنامه نویسی و این کد که دادم خدمتتون رو ران کنین. (دقت کنین که حتما شیت داده ها فعال باشه بعد وارد محیط برنامه نویسی بشید)
وقتی کار کد تموم شد برین تو شیت دومی و جلوی ستون اول که لیست کلمات ساخته شده فرمول رو بنویسین

fo-eng
2015/10/24, 22:16
من فکر کردم شما با این محیط آشنایی مقدماتی دارین
اول از همه کل محدوده ای که کلمات هستند رو انتخاب کنید. بعد یک نام مثلا database براشون تعریف کنین
بعد برین تو محیط برنامه نویسی و این کد که دادم خدمتتون رو ران کنین. (دقت کنین که حتما شیت داده ها فعال باشه بعد وارد محیط برنامه نویسی بشید)
وقتی کار کد تموم شد برین تو شیت دومی و جلوی ستون اول که لیست کلمات ساخته شده فرمول رو بنویسین

سپاسگذارم.
نه راستش اولین باره وارد محیط کدنویسی اکسل شدم.
ببینید من کل محدوده رو انتخاب کردم و از اینجا نام database رو براش انتخاب کردم.
http://s2.picofile.com/file/7647055585/82_1.jpg

خب این از این. alt + f11 زدم و وارد محیط برنامه نویسی شدم و بجای 100 عدد 5575 رو زدم که تعداد سطرهام رو نشون میده ولی خطا داد :(
http://s6.picofile.com/file/8218933276/%D8%A8%D8%B1%D8%B2%DB%8C%D8%B854%D8%AF%D8%A7%D9%84 %D8%B2.PNG

Amir Ghasemiyan
2015/10/24, 22:32
فایلی که فرستادم رو نگاه کنید.
برای تعریف نام قسمت refers to رو نگاه کنید

شما باید یک شیت دیگه هم بسازید. دقیقا مثل فایلی که براتون فرستادم. ببخشید اینو یادم رفت بهتون بگم

fo-eng
2015/10/24, 22:45
خدا رو شکر اجرا شد.
نهایت سپاس و تشکر رو از شما بابت همکاری دارم.
واقعا نمی دونم چطور از زحماتتون برای نوشتن و تلف شدن وقتتون بابت نوشتن کد تشکر کنم.

Amir Ghasemiyan
2015/10/24, 22:59
خواهش میکنم. انجام وظیفه بود
حالا که جواب سوالتون رو گرفتین لطفا تاپیک رو حل شده کنید.