New Post has been published on http://analystcave.com/create-microsoft-query-excel-excel-query/
How to create a Microsoft Query in Excel (Excel Query)

seen from Brazil

seen from Brazil
seen from Yemen

seen from Sweden
seen from Thailand

seen from United States
seen from Malaysia

seen from United States

seen from Malaysia
seen from Malaysia
seen from China
seen from China

seen from United States
seen from France

seen from Sweden
seen from United States

seen from United Kingdom

seen from Singapore
seen from Hong Kong SAR China

seen from Singapore
New Post has been published on http://analystcave.com/create-microsoft-query-excel-excel-query/
How to create a Microsoft Query in Excel (Excel Query)

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Master #Excel Data Analysis: Pivots, Sort&Filter, WhatIf, SQL etc.
New Post has been published on http://analystcave.com/excel-data-analysis-excel-tools/
Excel: Data Analysis Excel Tools
Excel is most appreciated for it’s ease of use as a Data Analysis Tool. I mean to explore the basics, as well as the more advanced Data Analysis Excel Tools. Be sure to read through the Other Tools section below for other honorable mentions.
Data Analysis Excel Tools
Sort & Filter PivotTable What If Analysis Data Analysis Toolpak Solver MS Query (SQL)
The DATA ribbon tab
As some of you already have noticed MOST (except for the PivotTable for no good reason) of the tools described in this post focus on features available BY DEFAULT within the Excel DATA ribbon tab (see image below). Some of them are AddIn that are installed by default along with MS Office, however, need to be activated manually. Skip to the relevant section of this post to read more.
Excel DATA ribbon tab (click to expand)
In this post I am focusing just on features that allow you to explore data or solve certain analytical problems. I am not focusing on simple data transformation features like removing duplicates, however, I do encourage that you learn more on these non-mentioned features.
Sort & Filter
Let’s kick off with the Sort & Filter group. See below for a quick look at how to use the Sort and Filter feature in Excel on an example data set: https://youtu.be/SJuPUUDqRys
PivotTable
PivotTables are so versatile a tool that most often no other Data Analysis Tool is needed. PivotTables are great for exploring data sets and for visualizing data with the help of automatically generated PivotCharts. See a simple PivotTable example below: https://youtu.be/4fG3fWbZ_MU
What If Analysis
The What If Analysis button in the DATA ribbon tab facilitates generally two useful features:
Scenario Manager – the scenario manager allows you to add several scenarios to a certain problem and then generate a summary comparing how the scenario values impact a selected cell value
Goal Seek –
Data Tables – creating scenarios
Let’s explore these tools (apart from the last one) on a simple problem case example. The problem:
Our example assumes there is a 500k$ Marketing Budget to spend on a Marketing Campaign which can consist of spending on Internet and/or TV ads. What is more, for the sake of the example let’s assume:
TV ads have a parabolic impact (see below) on Product demand i.e. at first the more you spend the more Product demand you generate, until you reach a peak where Product demand will actually fall (maybe viewers are tired of their favorite programs being bombarded by your ads).
Internet ads have a linear impact on Product demand i.e. the more you spend the more Product demand you generate
The Product demand cell formula is:
=2*D3+((C3-100)^2*-1+10000)
Scenario Manager
Using the example mentioned above let’s use the Scenario Manager to create 3 separate scenarios:
100% TV spend – 500k$ spent on TV ads
50% TV and Internet spend – 250k$ spent both on TV and Internet ads
100% Internet spend – 500k$ spent on Internet ads
STEP 1:Open the Scenario Manager
To add our scenarios go to the DATA ribbon tab, click What If Analysis and then select Scenario Manager....
STEP 2:Click Add to add a new Scenario
Specify the Scenario details – especially the range of Changing Cells that are to be specified by the scenario:
Scenario Manager: Adding a Scenario
Next provide values as appropriate to your Scenario:
Scenario Manager: Setting the Scenario Values
STEP 3:Repeat for each Scenario
You need to Name and specify the Changing Values for each Scenario separately.
STEP 4:Generate a Summary
Hit Summary... to generate a neat worksheet with a summary of your Scenarios. Specify the Result Cells – cells which will be modified in result to your Scenario. In my case it is just the Product demand cell:
Scenario Manager: Generate Summary
Now admire the results:
Scenario Manager: Results
Notice that in this example on purpose I created the formula as such so that it is not directly obvious (unless you work out the formula maximum) what is the best mix of TV and Internet ads. We will work through this example using different tools below.
Goal Seek
Goal Seek calculates the values necessary to achieve a specific goal. The “goal” is an amount returned by a formula. So in short – you should use Goal Seek if you have a function which characteristics are unknown or hard to figure out. Goal Seek is Solver’s younger (less developed) brother.
Some examples of when to use Goal Seek:
Solving single (changing) parameter mathematical functions (seeking a specific value e.g. 0)
Doing a quick check if a single parameter can help achieve a specific value for a formula (e.g. financial statements)
Using Goal Seek
Ok let’s learn how to apply Goal Seek. Let’s reuse our above example – let’s say we are aware that our TV ads function is a parabolic or a polynomial at least and we want to quickly locate some of it’s 0 values.
Our Product demand (just for TV ads) looks as so if we ignore the Internet ads:
=((C3-100)^2*-1+10000)
Where C3 is Marketing Spend on TV ads.
STEP 1:Open Goal Seek
Go to the DATA ribbon tab, click What If Analysis and then select Goal Seek.
STEP 2:Provide the Goal Cell, Value and the Changing Cell
For our example the Goal is our Product demand, and our Changing Cell will be the Marketing Spend on TV ads:
Goal Seek: Setting up
STEP 3:Run Goal Seek and BEWARE!
This is the result I received. Notice that the value I provided into the TV ads cell was 0 to start with.
Goal Seek: Results
This time Goal Seek came up with the result: 0. Ok now let’s rerun this example. But this time I will type a higher starting value for TV ads spend… say 150k$. Do you think it will provide the same result? See below:
Goal Seek: Results with different starting point
The computed result is different! This time Goal Seek came up with the result: 200. No why is that? Goal Seek is an iterative algorithm that in an iterative manner seeks to reach the Goal Value. However, if a function (cell formula) has several solutions expect that Goal Seek may land at different values.
This is very important to keep in mind!
Goal Seek in VBA
Not many know that you can use Goal Seek easily in VBA too! The parameters are as such: Range.GoalSeek(Goal, ChangingCell) where:
Range – single cell with Goal function (formula)
Goal – the Goal Value to achieve
ChangingCell – single cell which will can be modified to achieve the Goal
MSDN provides a sexy example below:
Worksheets("Sheet1").Range("Polynomial").GoalSeek Goal:=15, ChangingCell:=Worksheets("Sheet1").Range("X")
Data Analysis Toolpak
Also know as Analysis Toolpak is a Microsoft AddIn delivered with Excel (usually disabled by default) that provides data analysis capabilities to Excel. Let’s start by enabling this AddIn:
Enabling the Analysis Toolpak
STEP 1:Find Add-Ins in Excel Options
To open the Window go to FILE, select Options and then pick AddIns.
Analysis Toolpak: Excel Options
Next from the above window hit Go to progress to Step 2.
STEP 2:Open the Add-Ins window and enable the Add-In
From the Window below select Analysis Toolpak and hit OK:
Analysis Toolpak: Enabling the Add-In
Using the Analysis Toolpak
To open the Analysis Toolpak window simply go to the DATA ribbon and you should find at your far right in a new group (Analysis) the Data Analysis button. Hit it to open the whole range of Data Analysis Excel tools.
Analysis Toolpak: Opening
Click on the button to see the whole list of different tools:
Analysis Toolpak Tools
I won’t go through all these tools as they are pretty straightforward. Personally I tend to use only the Correlation feature which creates a nice correlation matrix out of a series of numerical columns.
Solver
Solver is a Microsoft AddIn to Excel that allows you to find optimal solutions for certain decision problems defined by a certain Objective (cell value). It’s like the older brother of the previously mentioned Goal Seek as it allows for more complicated computations and optimization making. Let’s start by enabling it in Excel.
Enabling the Solver AddIn
STEP 1:Find Add-Ins in Excel Options
To open the Window go to FILE, select Options and then pick AddIns.
Solver: Excel Options
Next from the above window hit Go to progress to Step 2.
STEP 2:Open the Add-Ins window and enable the Solver Add-In
From the Window below select Solver Add-In and hit OK:
Solver: Enabling the AddIn
Using the Solver AddIn
Now similarly as above let’s again consider our Problem from above. As previously let’s exemplify this tool with our Marketing Budget example. Quick reminder – we have 500k$ to spend on TV and Internet ads and we have a formula that calculates our spend to the resulting Product demand.
Now we want to know what is the optimal value of our spend on TV and Internet ads to maximize Product demand. This is exactly what we can calculate with Solver:
To open Solver window simply go to the DATA ribbon and you should find at your far right in a new group (Analysis) the Solver button. Hit it to open the Solver wizard:
Solver
Solver requires that you:
Specify the Objective – set a single cell that measures your Objective. Next select whether you want to Maximize, Minimize or set this value by changing certain variables (specified later)
Specify the Changing Variables – specify the variables (cells) which should be modified by Solver to optimize your Objective function (formula)
Specify your Constraints – specify cells which should evaluate to certain constraints limiting the values of the Changing Variables
I used the settings above to run Solver on my Problem. See the results below:
Solver: Problem results
The results are perfect (99 for TV ads and 401 for Internet ads)! Solver managed to find the optimal solution to my problem. Some of you probably thought the answer to be 100 and 400 – that was the hinted answer but not the optimal one! This is the power of Solver.
MS Query (SQL)
If you have been around my blog long enough you might have noticed my affection towards SQL in Excel manifested by my SQL Excel AddIn. I consider SQL a significant tool in the Data Analysis Excel toolbox. There are simply some things you won’t do easily with a PivotTable that can be easily written in a few SQL lines of code.
Let’s demonstrate a simple example of how to create a MS Query using the DATA ribbon tab using a simple source worksheet – Sheet1:
STEP 1:Open the MS Query window
Go to the DATA ribbon tab, click From Other Sources and then select From Microsoft Query.
Add MS Query (SQL)
STEP 3:Follow the MS Query window wizard to create your MS Query
This is the hard part. In my example I want to run a query against my working Workbook (Sheet1). See screens below:
Selecting the Data Source
Selecting the Excel file (can be your current Workbook)
Selecting the Worksheet and columns for your Query
Return data to Worksheet or Edit Query
Edit the Query (optional)
Return Data to Worksheet (as Table/PivotTable/PivotChart)
Indeed that’s a lot of steps right? Hence, if you consider using MS Query (SQL) I strongly recommend my SQL Excel AddIn. It does the same in just 1 step. It does not add any new features to Excel but simply makes it so easy to create MS Queries in Excel – so you can just use it to create the queries using the AddIn. The AddIn is not required to use them.
STEP 4:Refresh or Edit your MS Query
This is the wonderful part – your MS Query is represented in Excel as a QueryTable. A queryable Excel Table that can be Refreshed or modified. See the options below available for QueryTables:
Refreshing/Editing the MS Query
Summary: Data Analysis Excel
It is worth at least being aware of the wide range of Excel Data Analysis tools that are available by DEFAULT in Excel. Most Excel users are limited to the PivotTable and maybe Solver (2 common Excel questions asked for Analyst job interviews). However, Excel contains much more Data Analysis Excel tools than just those two.
I personally see much value in the MS Query (SQL) feature which has been so successfully hidden in Excel and made so hard to setup that it is simply neglected. Fortunately, there is a way around that with my SQL AddIn which I myself use on a regular basis. SQL however is a powerful tool (and language) and often allows you to create queries that can replace VBA macros and in most cases will run faster than VBA.
New Post has been published on The Analyst Cave | Excel, VBA, programming and more
New Post has been published on http://www.analystcave.com/excel-vlookup-vs-index-match-vs-sql-performance/
EXCEL: VLOOKUP vs INDEX MATCH vs SQL vs VBA
The VLOOKUP Excel function is one of the most popular functions, around which there has always been much debate (one worth reading here). You will most definitely find an article about this function on almost every Excel blog site out there that matters. Similarly there has been much argue about how efficient this function is, when compared to other combos like INDEX MATCH or DOUBLE TRUE VLOOKUPS. I have always wanted to put the dot over the “i” in at least the discussion around performance when using the VLOOKUP and the INDEX MATCH combo (VLOOKUP vs INDEX MATCH). Especially I feel the need for this when landing on similar quotes on the Internet:
Want to learn everything there is to know about VLOOKUP? Read my post on How to use VLOOKUP properly?
What to do with your VLOOKUPs to significant gain in performance, and what to replace them with if you are looking to make the workbook more maintainable? How much performance will you actually gain? Hopefully here you will find answers to these questions.
One additional thing I always wanted to bring into this discussion was the MS Query. Many Excel experts often forget to mention that when you need to lookup a lot of values within a certain table there is an approach almost as effective as any Excel trick out there – Microsoft Query (SQL). Excel features so call Query Tables which can execute OLEDB SQL queries on Excel data (worksheets treated like separate SQL Tables). This means that instead of doing a lookup of a certain value cell-by-cell you can do it within a single query. This query can always be refreshed at the push of a button (or macro), instead of dealing with uncontrollable automatic recalculations. I felt the urge to include this approach in this post as it can challenge face on all the other approaches out there. But let us start from the beginning…
VLOOKUP Example
What VLOOKUP does is lookup a certain key (in the example below a “Dog”) within a column of keys in a certain table. Then it takes a value corresponding to the row in which the key was located and returns a corresponding value from another column.
Let’s see this in the below VLOOKUP example:
VLOOKUP Example
It is one of the most often used formulas and simple enough. However, the VLOOKUP function has several setbacks:
Hard to maintain when columns are added/removed to/from the lookup table
Key column needs to be first in the lookup table
Little flexibility – cannot be used to match against both rows and columns of a lookup table. Although it can be replaced with HLOOKUP (the forgotten twin brother of VLOOKUP) this can be a nuisance if you want to create a table lookuping up both columns and rows
Why INDEX MATCH?
There are many decent posts on why to consider using INDEX MATCH against the common VLOOKUP (see here). But before we go into the pros and cons let’s understand how the INDEXMATCH combo works.
In short we can replace a VLOOKUP with a combo consisting of 2 functions:
INDEX – returning the value of an element in a table or an array, selected by the row and/or column number indexes)
MATCH – returning the relative position of an item in a specified range
In the example below the MATCH function will first return the relative position (the row number) of the Dog in the A column. Next the INDEX function will return a corresponding value from the same row in column B.
INDEX MATCH Combo
Not really much complicated then the VLOOKUP but the INDEX MATCH combo certainly handles all of the setbacks of the VLOOKUP pretty well (see section above).
But why use INDEX MATCH instead of VLOOKUP, especially if we get the exactly same result? Short summary of the pros and cons of the INDEX MATCH vs. the VLOOKUP:
More flexible – allows you to match both against rows and columns
Less error prone – adding/removing columns/rows from the lookup table should not crash the INDEX MATCH combo
Both vertical and horizontal lookups – VLOOKUP and HLOOKUP address either only vertial or horizontal lookups, whereas with the INDEX MATCH you can easily do both
Harder to use – VLOOKUP is a little easier to understand than INDEX MATCH and I know some people have difficulty with this two step approach
Slower (at least in newer versions of Excel like 2013) – opposed to the broadly shared myth INDEX MATCH is no longer faster than a simple VLOOKUP. Although, I still think INDEX MATCH is better in most cases. Do, however, read through to understand the performance comparison of VLOOKUP vs INDEX MATCH and the disclaimer at the end
What about SQL?
As promised a quick example as to how SQL (MS Query) can fit in. The query below will do the same lookup operation as the VLOOKUP and the INDEX-MATCH.
SELECT Category FROM [Sheet1$] WHERE Animal = "Dog"
Returning the value
Mammal
A query to lookup a whole column of values would look more like this:
SELECT LVS.lookup_value, LT.lookup_result FROM [LOOKUP_VALUES_SHEET$] AS LVS INNER JOIN [LOOKUP_TABLE$] as LT ON LVS.lookup_value = LT.lookup_value
How to create an SQL query in Excel? Just go to:DATA From Other Sources From Microsoft Query or check out my Excel SQL Add-In.
Now SQL will not prove much useful for just a single lookup operation. Its benefits appear when needing to carry out A LOT of lookup operations. As you will see there are certain tricks you can use in Excel to get better performance than SQL can provide you, however, I would encourage learning SQL as in most cases it can easily replace the need to create complex queries or Array Formulas and still provide awesome performance.
What about VBA?
Couldn’t miss out on an opportunity to check how VBA compares to the other approaches, although it seems pretty obvious it wouldn’t be a fair match – as VBA is singlethreaded as opposed to Excel’s native formulas, which are recalculated concurrently in multiple threads. To challenge the other approaches I devised a simple VBA procedure using the VBA Dictionary object.
How does the VBA lookup procedure work? It loads the entire lookup table to a VBA Dictionary object and then looks-up the entire lookup values against the VBA Dictionary.
VBA Src code
Sub TestVBA() OptimizeVBA True Dim startTime As Single, endTime As Single startTime = Timer Dim categories As Range, values As Range Dim lookupCategories As Range, lookupValues As Range Dim vlookupCol As Object Set categories = Worksheets("DictSort").Range("A2:A200001") Set values = Worksheets("DictSort").Range("B2:B200001") Set lookupCategories = Worksheets("DictSort").Range("A2:A200001") Set lookupValues = Worksheets("DictSort").Range("C2:C200001") 'Build Collection Set vlookupCol = BuildLookupCollection(categories, values) 'Lookup the values VLookupValues lookupCategories, lookupValues, vlookupCol endTime = Timer Debug.Print (endTime - startTime) & " seconds have passed [VBA]" OptimizeVBA False Set vlookupCol = Nothing End Sub Function BuildLookupCollection(categories As Range, values As Range) Dim vlookupCol As Object, i As Long Set vlookupCol = CreateObject("Scripting.Dictionary") For i = 1 To categories.Rows.Count Call vlookupCol.Add(CStr(categories(i)), values(i)) Next i Set BuildLookupCollection = vlookupCol End Function Sub VLookupValues(lookupCategory As Range, lookupValues As Range, vlookupCol As Object) Dim i As Long, resArr() As Variant ReDim resArr(lookupCategory.Rows.Count, 1) For i = 1 To lookupCategory.Rows.Count resArr(i - 1, 0) = vlookupCol.Item(CStr(lookupCategory(i))) Next i lookupValues = resArr End Sub Sub OptimizeVBA(isOn As Boolean) Application.Calculation = False Application.EnableEvents = Not (isOn) Application.ScreenUpdating = Not (isOn) ActiveSheet.DisplayPageBreaks = Not (isOn) End Sub
Fastest approach: DOUBLE TRUE VLOOKUP
The VLOOKUP allows you to either approximate a match (by providing range_lookup value to TRUE) or select an exact match. Strangely enough Excel defaults to the approximate options which is obviously a nuisance for most of us… but maybe that was actually a hint from Microsoft that this is the option to go with? It turn out that using the TRUE option that approximates the lookup result will return the lookup value providing a significant performance boost (scroll down to see how significant).
However, a VLOOKUP using the TRUE option will always return a result – not necessarily the one you were looking for. The trick therefore socialized by Charles Williams here shows how using 2 TRUE VLOOKUPS you can get accurate results with great performance. How does it work? In short what Charles suggests is using an IF function with the condition being the FIRST TRUE VLOOKUP to match for the lookup value (the key). If the result matches against the original lookup value (the key) the IF functions returns the SECOND TRUE VLOOKUP which returns the matched value in the right column. If not it returns any default value set. See below:
DOUBLE TRUE VLOOKUP
The formula below:
=IF(VLOOKUP(D1;A1:A5;1;TRUE)=D1;VLOOKUP(D1;A1:B5;2;TRUE);)
Notice that the condition in the formula verifies if the VLOOKUP located the right lookup value. If so, the second VLOOKUP will return the associated lookup result. Might seem strange at first that 2 VLOOKUPs are better than one. Well it does come with 1 condition…
There is however one CONSIDERABLE setback to keep in mind. The lookup table has to be SORTED by the lookup column (key column)! Otherwise the query will return inconclusive results.
Let’s now dive right into the performances stats around these different approach.
Please be aware that I deliberately left out some additional alternative performance tweaks out there that also are quicker than the simple VLOOKUP, but are not faster than the DOUBLE TRUE VLOOKUP.
Performance comparison: VLOOKUP vs INDEX MATCH vs SQL
Before we start I want to level set a couple of things. I am running these tests with Excel 2013 installed so keep in mind that if you are using a different version you may see slightly different results (even the INDEX MATCH being quicker then the simple VLOOKUP and I am told to believe). As all things changes, so should the discussion around VLOOKUP need updating – especially performance-wise. Apart from that some additional things to mention:
Tests run on an Intel i5-4300U processor (2 physical cores)
Tests run on a large dataset (200k lookup table) and assuming a large number of lookups (>25k) to diffuse the problem of accurate performance measurements (25k – 200k lookup operations). Results should give a good approximation of the actual metrics
Lookups on UNSORTED data
In most common cases you are carrying out lookup operations on a UNSORTED lookup table. The chart below present results of the following alternatives:
VLOOKUP (UnSorted) – a simple VLOOKUP on an unsorted lookup table
INDEX MATCH (UnSorted) – a simple INDEX MATCH on an unsorted lookup table
SQL (UnSorted) – an simple SELECT query matching against the lookup values (keys) of the VLOOKUP (returns same results in same order)
VBA (Sorted) – a VBA procedure that creates a dictionary of the lookup table and matches the lookups using the VBA Dictionary. You can find the source code here: source code
Execution time of lookup operations on UNSORTED data
So what do we see? It seems that the INDEX MATCH combo performs consistently slightly worse then the simple VLOOKUP. There are no large differences when increasing the amounts of operations performed which seems like there is no reason to jump to an INDEX MATCH combo in the need for just performance. SQL (and VBA) on the other hand wiped out the competition being almost 19x faster when executed against 200k lookups. It seems like the MS Query did not increase it’s execution time considerably probably leading to think that it may perform equally well on much larger lookup tables. VBA was also quite efficient when executed on less than 100k lookup operations. Nevertheless, I consider SQL the winner as clearly it performed better for more operations.
Lookups on SORTED data
Let’s now consider the ideal situation where we have a SORTED lookup table. The chart below will now present results of the following alternatives:
VLOOKUP (Sorted) – a simple VLOOKUP on a sorted lookup table
DOUBLE TRUE VLOOKUP (Sorted) – a DOUBLE TRUE VLOOKUP on a sorted lookup table
INDEX MATCH (Sorted) – a simple INDEX MATCH on a sorted lookup table
SQL (Sorted) – an simple SELECT query matching against the lookup values (keys) of the VLOOKUP (returns same results in same order)
VBA (Sorted) – a VBA procedure that creates a dictionary of the lookup table and matches the lookups using the VBA Dictionary, you can find the source code here: source code
Execution time of lookup operations on SORTED data
As we can see the DOUBLE TRUE VLOOKUP rules the stage with an astonishing 0.22 seconds vs. the aweful 110 seconds of a regular VLOOKUP. An astonishing improvement! SQL comes second with a score just slightly above 5 seconds which seems reasonable (although using only 1 core due to being single threaded). What comes as strange is that both the VLOOKUP and the INDEX MATCH actually performed worse when executed against a sorted lookup table. Not something you might expect, but broadly explained by Excel-guru Bill Jelen in this podcast really worth watching if you want to know more on the subject.
Disclaimer
There are most certainly other alternatives to consider that I did not include in this analysis, this is because I considered them as unsatisfactory and uncommon. See reasons for some of the omitted alternatives below.
Separating INDEX from MATCH formula – requires rebuilding your formula (splitting into 2 separate columns) and still does not provide significant performance improvements
VLOOKUP array-formula – according to some web sources this approach provides similar results as a regular VLOOKUP
Conclusions
For me these results mean at least 4 things:
On a daily basis swapping your VLOOKUPs for INDEX-MATCH combos will not affect your Excel workbook performance although may provide you with more flexibility and reduce the number of errors when working on the lookup table
If performance is key sort your lookup table and swap those VLOOKUPS with DOUBLE TRUE VLOOKUPS. Alternatively swap the VLOOKUPs with a Microsoft Query for more simplicity and control
Unless you are using the DOUBLE TRUE VLOOKUP don’t sort your lookup data table if you want to gain performance – this will have the opposite effect
When working with very large datasets (>100k rows) I personally use MS Query. Although it may be just a little slower (consistently a couple of sec) than the DOUBLE TRUE VLOOKUP, for lookup operations, it is more flexible (performs well against other Excel functions) and provides you more control over your query. This also releases you out of the mercy of the Excel Automatic Calculation feature which may cause cells to recalculate when source data is modified (you can refresh the query via macro or by clicking refresh)
Don’t resort to VBA in any case. It is an overkill for this exercise, although it performed almost as well as SQL, it introduces unnecessary complexity and requires saving files in XLSMXLSB/XLS file format. Other than for amusement, VBA has no justification for this scenario
The VLOOKUP vs INDEX MATCH topic is one of the most popular Excel debates, but I hope that this post will shed more light and provide a measurable comparison of the options out there. I also feel I need to encourage the use of MS Queries as having their own place in this debate.
Do you agree? What do you think about the comparison of these approaches?
“…see chapter 4 for the down-low on [this term].”
query to ED: changing to lowdown; down-low usually means info that is kept under wraps, also slang for specific kind of sex.
query-not-query
query from CE to ED: use of word butthole ok? possibly rewrite to: “...imagine that gas seeping out from your bottom”?
lemme answer for ED: butthole ok. there are worse things.
other possibilities (not mine, really): imagine that gas blasting from your anus, asshole, rectum, bunghole, shithole, shitter; derriere, dumper, backdoor, lily of the valley, savory rosette, rosebud, drug mule...
in a book for kids with some degree of gross-out humor, what, you really want to say “your bottom” or “rear end” or “where your poop comes out”?

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
query: r u sure you want to compare Sherlock Holmes’s pipe to a pacifier in a children’s book?
So let’s say you encounter the following sentence in a book for teens:
“There’s all kinds of fun stuff on the internet. You can [redacted, redacted], you can flirt with men older than your father.”
And you bring it to the attention of the editor by saying, “Both [my boss] and I thought this inappropriate!” and she changes it, plus the margin text that plays off this “joke.” But in doing so says, “I defer to you, but I would have left all of it the way it was.”
query: "Are you sure you want to tell a kid to call up a hospital and ask if they have any extra petri dishes they can share, just so they can do your bacteria growing activity?" kid: Um hello-- hospital: You have reached blah blah blah Hospital. If this is an emergency, hang up and dial 911. For directions, press 1. For-- kid: Um, can I speak to--? hospital: I'm sorry, I didn't quite get that. Please enter or speak the number again. Press 1 for-- Kid hangs up. Then remembers her parents during the rare phone calls to credit card company or bank or insurance, their crazed expressions and rude gestures and repeats of "Operator" "I want to speak to the operator" "I want a real person," so she presses 0 and repeats "operator" until she gets a real person. Who transfers her to someone else. Who transfers her to someone else. Then she's placed on hold. Then the call gets "dropped." Then she tries all over again and gets put on hold twice until she reaches someone who listens to her request for free petri dishes and responds: "You're fucking kidding me, right," and hangs up. The kid will remember this years later when she's wheeled into emergency and waits and waits for a nurse, a doctor. She sees hospital employees running around. More people cram into the waiting area. The pain escalates, perhaps it's whatever it is that brought her into ER, perhaps it's brought on by the anxiety of waiting and the very real smells of fear and pain...and blood...and worse. The reception phones ring and ring and ring.