Start a free trial to see if esProc is the right tool for you.
Through esProc, you can do a lot of sophisticated data manipulation in Excel. The methods can be 10 times simple compared to VBA.

In esProc, you can query data as though they are database tables, not using some clumsy VBA functions anymore.
Not only supports ordinary SQL, but also supports group having, subquery, nested subquery, join, even 'with... as...'table expression.
Desktop level data computing tool, ready to use, perfect debugging, inline with natural thinking, simpler than other languages.
Write code in the cell, not in a traditional text editor.
The cell value is the result calculated by an expression.
The cell name is used as a natural variable to refer to the cell value.

Through hundreds of samples covering most of the scenarios the data analysts may encounter in real-world businesses. Once you learn how to implement these tasks, you can handle the tabular data effortlessly and enjoy the daily work.
With simple syntax and moderate learning curve, esProc enables business people who are only familiar with Excel and have never writen a single line of code to experience an automatic and efficient data processing through programming.
It's good to use tools to improve work efficiency, but if the tools themselves are more difficult, it's unnecessary. After the analysis and comparison, we can make a comparison table:
| Installation | Debugging | Tabular data calcuation | Learning | |
| MySql | ★ | ★ | ★★ | ★★★★ |
| VBA | ★★★★★ | ★★ | ★ | ★ |
| Python | ★★ | ★★★ | ★★★ | ★★★ |
| esProc | ★★★★ | ★★★★★ | ★★★★★ | ★★★★ |
Note: the highest is five stars. The more stars, the more convenient.
Compare with:
| 1 | import pandas as pd |
| 2 | sale_file = 'E:\\txt\\SalesRecord.txt' |
| 3 | sale_info = pd.read_csv(sale_file,sep = '\t') |
| 4 | sale_info['month']=pd.to_datetime(sale_info['sale_date']).dt.month |
| 5 | sale_group = sale_info.groupby(by=['clerk_name','month'],as_index=False).sum() |
| 6 | sale_group_month = sale_group.groupby(by='month') |
| 7 | set_name = set(sale_info['clerk_name']) |
| 8 | for index,sale_g_m in sale_group_month: |
| 9 | sale_g_m = sale_g_m.sort_values(by='sale_amt',ascending = False) |
| 10 | sale_g_max_8 = sale_g_m.iloc[:8] |
| 11 | sale_g_max_8_name = sale_g_max_8['clerk_name'] |
| 12 | set_name = set_name.intersection(set(sale_g_max_8_name)) |
| 13 | print(set_name) |
| A | |
| 1 | E:\\txt\\SalesRecord.txt |
| 2 | =file(A1).import@t() |
| 3 | =A2.groups(clerk_name:name,month(sale_date):month;sum(sale_amt):amount) |
| 4 | =A3.group(month) |
| 5 | =A4.(~.sort(-amount).to(8)) |
| 6 | =A5.isect(~.(name)) |
Here are articles you can read:
Looking for the Best Excel Add-ins.
Here we examine and compare some common add-ins in terms of deployment process, development efficiency, application fluidity and, particularly, computational capabilities.
Looking for the Best Lightweight Data Analysis Script Tools.
Let me walk you through four top script tools to experience and compare their usability, dev efficiency, types of supported data sources, functions for performing structured computations, and, particularly, algorithm implementation performances to find the best one.