Excel to Python: INDIRECT Function - A Complete Guide | Mito
Home Icon
divider

Functions

divider

Lookup

divider

INDIRECT

How to Use Excel's INDIRECT Function in Pandas

Excel's INDIRECT function: Return reference specified by text string.

This guide explains in depth how to replicate Excel's INDIRECT functionality in Python using pandas and numpy.

We will cover syntax, multiple examples, edge cases, performance considerations, common mistakes, and best practices.

To mimic Excel's INDIRECT in pandas, you can use several approaches depending on context.

Below are multiple strategies, each with pros and cons.

These code examples also illustrate performance differences and how to handle missing data.

Simple equivalent of INDIRECT using core pandas methods.

Useful for small datasets and straightforward logic.

import pandas as pd
df = pd.DataFrame({'A':[10,20], 'B':[30,40]})
col_name = 'A'  # simulated INDIRECT("A:A")
print(df[col_name])
Copy!
Clipboard

For performance-sensitive tasks, numpy can be faster than pandas.

This approach is vectorized and avoids Python loops.

import re, pandas as pd
addr = 'B2'
m = re.match(r"([A-Z]+)(\d+)", addr)
col, row = m.group(1), int(m.group(2))
n=0
for ch in col: n = n*26 + (ord(ch)-64)
print(row-1, n-1)  # iloc indices
Copy!
Clipboard

For complex business logic, combine pandas, numpy, and custom functions.

This is useful when porting long Excel formulas into maintainable Python code.

import pandas as pd
df = pd.DataFrame({'A':[1,2,3]})
print(df['A'].sum())
Copy!
Clipboard

Here are common mistakes when replicating Excel logic in pandas:

These include indexing errors, type mismatches, handling NaN values, and misinterpreting Excel defaults.

We provide at least three examples for clarity.

Excel uses 1-based indexing, pandas uses 0-based.

# Excel is 1-based, pandas iloc is 0-based:
import pandas as pd
df = pd.DataFrame({'A':[10,20], 'B':[30,40]})
excel_row, excel_col = 2, 2  # B2
value = df.iloc[excel_row-1, excel_col-1]
print(value)
Copy!
Clipboard

Excel coerces types differently than pandas.

import pandas as pd
df = pd.DataFrame({'num':['10','20','x']})
df['num_num'] = pd.to_numeric(df['num'], errors='coerce')
print(df)
Copy!
Clipboard

Excel ignores blanks, pandas uses NaN.

import pandas as pd
df = pd.DataFrame({'A':[1,None,3]})
print(df['A'].fillna(0))  # Excel often treats blanks as 0 in some functions
Copy!
Clipboard

Excel is fine with small datasets, pandas/numpy scale better for large data.

import pandas as pd
df = pd.DataFrame({'A': range(1_000)})
# Avoid row-wise loops:
total_loop = 0
for _, r in df.iterrows():
    total_loop += r['A']
# Prefer vectorization:
total_vec = df['A'].sum()
print(total_vec)
Copy!
Clipboard

The INDIRECT function in Excel allows users to return reference specified by text string.

Syntax and parameters are flexible, allowing for optional arguments and different modes of operation.

=INDIRECT(ref_text)

Excel formulas can be combined with other functions, making this versatile in reporting and analysis.

INDIRECT Excel Syntax

ParameterDescriptionData Type
ref_textReference as textstring

Examples

FormulaDescriptionResult
=INDIRECT("A1")Return value of A1Value
=INDIRECT(...)Another common example of INDIRECT in practice.Result depending on context

Don't re-invent the wheel. Use Excel formulas in Python.

Install Mito

Don't want to re-implement Excel's functionality in Python?

Automate analysis with Mito