4.8/5 - (18 امتیاز)
پاور کوئری از ابزار فوق العاده اکسل است که کاربرهای بسیار زیادی دارد. شما به راحتی می توانید از پاور کوئری برای استخراج داده از وب استفاده کنید. در این مطلب، با نحوه ساخت یک کوئری  بر اساس داده های یک صفحه وب آشنا خواهید شد. در قسمتی از این فرایند، شما میتوانید بر روی جدول های موجود در یک صفحه وب تغییرات دلخواه خود را انجام دهید تا فقط داده هایی نمایش داده شود که به آن احتیاج دارید. یعنی ابتدا به داده های خود شکل دهید و سپس داده های خود را فیلتر کنید و فقط داده های مورد نیاز را در اکسل بارگذاری کنید.

در صورتی که با ابزار قدرتمند پاور کوئری در اکسل آشنا نیستید، میتوانید به صفحه زیر مراجعه کنید و به صورت مرحله به مرحله و از ابتدا تا انتها با پاور کوئری آشنا شوید: دوره رایگان آموزش پاور کوئری در اکس

اما قبل از مطالعه این مطلب پیشنهاد میکنیم ویدئوی آموزشی زیر را با موضوع آشنایی با پنجره پاور کوئری و نحوه لود کردن داده مشاهده کنید. 

گام اول: اتصال به یک صفحه و استخراج داده از وب سایت ویکی پدیا

اکسل 2016: تب data را باز کنید، سپس New Query > From Other Sources >From Web را انتخاب کنید. اگر دکمه new query قابل مشاهده نیست،  Data > From Web را انتخاب کنید.

اکسل 2010-2013: تب power query را باز کنید، سپس  From Web را انتخاب کنید. اگر تب power query قابل مشاهده نیست، میتوانید افزونه آن را دانلود و نصب کنید. اگر با نصب پاور کوئری آشنایی ندارید می توانید این مطلب را بخوانید: دستورالعمل کامل نصب power query (پاور کوئری) در اکسل

1.  در دیالوگ باکس from web، آدرس دلخواه را وارد کنید. در اینجا آدرس یکی از صفحات ویکی پدیا را استفاده میکنیم.                                ( http://en.wikipedia.org/wiki/UEFA_European_Championship)

استخراج داده از وب     2. Ok را کلیک کنید.

پس از اتصال به صفحه مورد نظر، لیستی از جدول های موجود در آدرس مشخص شده را در پنجره navigator مشاهده می کنید. شما میتوانید بر روی هرکدام از جدول ها کلیک کنید تا یک تصویر خلاصه از آن را در سمت راست پنجره مشاهده کنید.

پاور کوئری و استخراج داده از وب

3.  بر روی جدول [Results[edit راست کلیک کنید و edit را انتخاب کنید. Query editor به همراه داده های تورنومنت باز میشود.

 

گام دوم : شکل دهی به داده های استراج شده از وب

حال که جدول مورد نظر در Query editor باز شده است و داده خود را از وب استخراج کرده اید، شما میتوانید داده ها را پاکسازی و شکل دهی کنید تا متناسب با نیازهای شما گردد. در این مرحله، با حذف تمام ستون ها به جز year و final winner جدول را تغییر شکل دهید.

  1. در قسمت Query Preview، با استفاده از Ctrl+Click ستون های year و final winner را انتخاب کنید.
  2. Remove Columns > Remove Other Columns را کلیک کنید.

پاور کوئری و استخراج داده از وب

گام سوم: پاکسازی داده ها

در این مرحله، شما می بایست با جایگزینی مقادیر و فیلتر کردن داده، به پاکسازی داده ها بپردازید.

  1. ستون year را انتخاب کنید.
  2. در query editor گزینه Replace Valuesرا انتخاب کنید.
  3. در دیالوگ باکس replace value، در باکس Value to Find مقدار “Details” را تایپ کنید و باکس Replace With را خالی بگذارید.
  4. Ok را کلیک کنید.

پاور کوئری و استخراج داده از وب

گام چهارم: مقادیر یک ستون از داده های استخراج شده را فیلتر کنید.

حال با فیلتر کردن ستون year فقط ردیف هایی را نمایش میدهیم که شامل “year” نمیشود.

  1. فلش مربوط به لیست کشویی ستون year را کلیک کنید.
  2. در لیست filter گزینه year را غیر فعال کنید.

گام پنجم: یک query را نامگذاری کنید.

در اینجا می بایست کوئری را که ایجاد کرده اید نامگذاری کنید.

در پنجره query setting، در باکس name، عبارت Euro Cup Winners را تایپ کنید. اگر لینک all properties را کلیک کنید میتوانید توضیحاتی در مورد query در باکس Description اضافه کنید.

پاور کوئری و استخراج داده از وب

گام ششم: کوئری را در یک ورک شیت بارگذاری کنید.

در انتها، میتوانید کوئری Euro Cup Winners  را به یک ورک شیت بارگذاری کنید.

  1. در گوشه بالا سمت چپ، گزینه close&load را کلیک کنید.

پاور کوئری نتایج کوئری را در یک ورک شیت قرار میدهد. اگر بعدها نیاز به به روز رسانی داده ها داشتید، در هر جایی از محدوده داده کلیک کنید و سپس گزینه refresh را کلیک کنید. هر اطلاعات جدیدی که در صفحه وب ایجاد گردد ، به صورت اتوماتیک در کوئری روز رسانی میشود.

گام هفتم: وقایع پشت صحنه را کشف کنید.

  1. در هر جایی از داده ها کلیک کنید و در پنجره view گزینه query editor را کلیک کنید.
  2. در سمت راست، لیست applied steps را مشاهده کنید. همانطور که فعالیت های مربوط به Query را انجام میداده اید، query steps ایجاد شده است. هر گام از کوئری یک فرمول نوشته شده بر اساس زبان M دارد.

شما میتوانید با انتخاب  Advanced Editor در ریبون power query، کد های M  را به صورت کامل مشاهده کنید.

نکته:

query editor فقط زمانی ظاهر میشود که یک کوئری را بارگذاری یا اصلاح کنید یا یک کوئری جدید ایجاد کنید. ویدئو زیر نشان میدهد query editor زمانی ظاهر میشود که یک کوئری در ورک بوک اکسل را اصلاح میکنیم. برای مشاهده query editor بدون ایجاد یا اصلاح یک کوئری، در بخش  Get External Dataدر تب power query، دستور  From Other Sources > Blank Query را انتخاب کنید. ویدئوی زیر یک راه برای ظاهر شدن این ابزار را نشان میدهد.

[/vc_column_text][/vc_column][/vc_row]

فیلم و دوره رایگان آموزش پاور کوئری در اکسل و پاور بی آی

مشترک شدن
Notify of
guest

61 نظرات
نظردهی درون متنی
مشاهده همه نظرات
سعید

سلام.خسته نباشید دوست عزیز.میشه تو اکسل یه جدول طراحی کرد که مثلا از سایت یه نماد بورسی چنتا عدد مشخص کنیم که تو جدولمون باشه بعد فردا همون اعداد یه خط پایین ترآپدیت شده نمایش داده بشن به صورت خودکار.همین جوری هر روز با تاریخ جدید زیر همون نماد اطلاعات جدیدش درج بشه.مثلا امروز قیمت 20 تومن است فردا زیر همین 20تومن قیمت جدید روز ثبت بشه.دیگه هر روز دونه دونه دستی وارد نکنیم.

امیر دایی

سلام بستگی به ساختار صفحه ای که میخواید دیتا رو ازش بخونید داره. اول با استفاده از آموزش این مطلب ببینید می تونید دیتای اون صفحه رو بخونید یا نه. اگر دیتا رو تونستید بخونید، با vba یک کد باید بنویسید که آخرین دیتا رو برداره و توی یک صفحه زیر هم ثبت کنه و فردا در ادامه دیتای قبلی دیتا رو ذخیره کنه. اگر ساختار صفحه طوری بود که با این آموزش نشد دیتا رو بخونی باید از برنامه نویسی vba و ابزار selenium استفاده کنید. معمولا با ابزارهای معمول اکسل نمیشه این کارها رو انجام داد. اگر حجم… مطالعه بیشتر »

mfd

چطوری از یک سایت دیتایی که یوزر و پسورد دارد دیتا فراخوانی کنید یوزر و پسورد هم داریم.

امیر دایی

سلام
با پاور کوئری نمی تونید این کار رو بکنید
باید از زبان های برنامه نویسی و ابزارهای مختص این کار استفاده کنید. مطلب زیر رو مطالعه کنید.
https://www.zenrows.com/blog/web-scraping-login-python#scraping-websites-with-csrf-token-authentication-for-login

محسن

سلام
تابع mid در اکسل به خوبی کار می کنه ولی مابه ازای اون تابع text.range در پاورکوئری درست کار نمی کنه آیا مشکل زبان فارسیه یا من بلد نیستم؟
مثلا کلمه کارتخوان در تمام ردیفها تکرار شده فقط می خوام تاریخها بمونند!
کارتخوان1401/2/6
کارتخوان1401/2/16
کارتخوان1401/10/12

امیر دایی

برای مسئله ای که دارید از گزینه replace استفاده کنید و مقدار کارتخوان رو با هیچی جایگزین کنید. (قسمت replace with رو خالی بذارید.)
باید تابعی که نوشتید رو بفرستید تا مشکلش مشخص بشه.

محسن

ستونی دارم به اسم sharh این تابع رو درپاورکوئری نوشتم در یک ستون جدید ولی هرچی با اعداد ور میرم نتیجه دلخواه عایدم نمیشه
Text.Range([sharh],0,8)=
اعداد0و8رو عوض کردم ولی مثل تابع mid اکسل کار نمی کنه!

امیر دایی

تا مسأله رو درست توضیح ندید نمی تونم راهنمایی کنم.
با تابعی که نوشتید باید 8 کاراکتر اول رو نمایش بده. در غیر این صورت یکی از مقدارها و نتیجه تابع رو ارسال کنید تا بیشتر راهنمایی کنم.

محسن

میخوام بهش بگم8کارکتراول رو رها کنه وبقیه رو بیار هرچی بود

امیر دایی

از فرمول زیر استفاده کنید:

Text.Middle([name],7,1000)
محسن

سلام و خسته نباشید
در یک فولدر تعداد28فایل اکسل دارم که در شیت یک همه اونا جدولی هست با ستونهای یکسان ولی ردیفهای مختلف چجوری با پاورکوئری همه اونا رو به یک جدول در یک شیت تبدیل کنم مشکل اینجاست که اسم شیتها مختلفه؟

امیر دایی

اگر نام شیت ها متفاوت باشه یه مقدار کار پیچیده تر میشه. 1- باید مثل حالت ساده با استفاده از from folder فایل ها رو بخونید و به جای اینکه گزینه combine رو بزنید با استفاده از transform وارد پاور کوئری بشید. 2- همه ستون ها به جز content رو حذف کنید 3- یک ستون ایجاد کنید و با استفاده از تابع زیر محتوای ستون content رو تبدیل به table کنید. Excel.Workbook([Content], null, true) 4- با استفاده از فلش دو جهته ایجاد شده روی ستون محاسباتی جدید شیت های فایل ها رو بریزید بیرون. (ستون های name، data و type)… مطالعه بیشتر »

محسن

با تشکر بسیار راه حل جواب دا!د فقط یه مشکل کوچیک هست سرستونهای همه شیتها اومدند!

امیر دایی

با فیلتر حذفشون کنید.

محسن

بله شدنیه ولی اولین سرستون بایدباقی بمونه

امیر دایی

آموزش های مقدماتی پاور کوئری رو از لینک زیر ببینید.
آموزش رایگان پاور کوئری

توحید نوری پور

سلام در پاورکوئری اگه سایت رمز ورود داشته باشد آیا می توان انتقال خودکار داده را انجام داد و پاورکوئری را انجام داد یا نه و چگونه . ممنون

امیر دایی

سلام
خیر امکانش نیست.

سرشته

سلام
وقت شما بخیر
ببخشیدمن تاریخچه نرخ ارز یورو را از یک سایت فراخوانی کردم که بصورت صفحه بندی شده است به همین دلیل کلا ۳۰ تا رکورد صفحه اصلی لود میشه. و هر دفعه که رفرش میکنم، به ازای رکورد جدید رکورد آخر حذف میشه و همه فرمولام بهم میریزه.
آیا شما راه حلی دارید که من بتونم کل رکوردهارو که صفحه بندی شده است را فراخوانی کنم؟

امیر دایی

سلام
باید لینک سایت رو بفرستید تا بشه بررسی کرد امکان پذیر هست یا خیر.
ولی به صورت کلی اگر روی هر صفحه کلیک کنید و جدول صفحه بعد نمایش داده بشه، می تونید همه صفحه ها رو با پاور کویری بخونید و با قابلیت append زیر هم بچسبانید.

تکنیک های پیشرفته تری هم هست که میشه لینک رو به صورت داینامیک ایجاد کرد و با ساخت توابع داده ها رو استخراج کرد، که باید به پاور کوئری مسلط باشید

سرشته

خیلی ممنون از پاسخ دهیتون.
این لینک سایت است.
https://www.tgju.org/profile/price_eur/history
من کل دیتارو میتونم با وب اسکریپینگ استخراج کنم.
منتها در این حالت هم، اگر بخوام فقط رکورد اخر رو از وب بخونم و اپند کنم. موقع رفرش رکورد قبلی رو به ازای رکورد جدید از دست میدم.

امیر دایی

نمی دونم چطور دارید دیتا رو استخراج میکنید، ولی به صورت کلی داده رو از دست نمی دید، فقط یک سطر جا به جا میشه. لینکی که فرستادید، وقتی روی شماره صفحه کلیک می کنید، دیتا رو از طریق api و در فرمت json فراخوانی میکنه. می تونید به جای اینکه صفحه رو اسکرپ کنید، با api داده ها رو در قالب json بخونید و بعد هر کاری دوست دارید روش انجام بدید. مثلا توی اکسل ذخیره کنید یا توی یه دیتابیس دیگه ذخیره کنید. مثلا اگر روی لینک زیر کلیک کنید، دیتای صفحه اول به صورت json نمایش داده… مطالعه بیشتر »

حقی

سلام و خسته نباشید
من از روش شما استفاده می کنم و برای بعضی از سایت ها از جمله tsetmc.com جواب میده و قیمت سهام با امکان آپدیت 1 دقیقه ای فراهم است اما بعضی از سایتها خطا میده از جمله https://cdn.ime.co.ir/ که خطای زیر میده
Table highlighting is disabled because this page uses internet explorer’s compatibility modeلطفا برای استخراج داده ای جدول سایت مذکور راهنمایی کنید

mah_pardis

سلام
وقت بخیر
من from web میزنم گزینه basic و advance برام نمیاد
ممنون میشم راهنمایی بفرمایید


امیر دایی

سلام
دقت کنید که از نسخه های به روز اکسل 2016 یا 2019 یا 2021 استفاده کنید. یا اگر پاور کوئری رو روی اکسل 2013 نصب کردید آخرین ورژن دانلود و نصب کنید. یک سری امکانات ممکنه در نسخه های قدیمی پاور کوئری در دسترس نباشه.

وحید

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

امیر دایی

سلام
بله به صورت تئوریک امکان پذیر هست فقط باید حتمالا از برنامه نویسی vba یا python استفاده کنید.

میلاد

سامانه ی آماری ای داریم در سازمان که هر دفعه که بخوایم ورود کنیم حتما باید یوزر و پسورد بزنیم. بعد نحوه ی و نوع گزارش رو باید تیک بزنیم و در انتها خروجی اکسلی میده که تازه ما باید روش فرمول نویسی کنیم و به گزارش مطلوب تبدیلش کنیم. این امکان وجود داره که ما با ترفندی یکبار فرمت گزارش رو اماده بکنیم و کار احصاء اطلاعات از داخل سامانه به صورت خودکار انجام بشه؟

امیر دایی

سلام
بستگی داره که سامانه به چه صورت باشه ولی احتمالا با پاور کوئری بتونید یه کارهایی بکنید.
حداقلش این هست که خروجی رو از سامانه بگیرید و بقیه مراحل رو با پاور کوئری یا ماکرونویسی انجام بدید. این آموزش ها رو ببینید.
آموزش پاور کوئری در اکسل
آموزش ماکرونویسی در اکسل