> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getoneprofile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter, sort and search

> Narrow a table to the rows you care about without changing the data underneath it.

Filtering, sorting and searching change what the grid shows, never what it holds. Combine all three to work through a table, then decide separately what a run should cover.

<Frame caption="The filter panel, open on a nested group.">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/oneprofile/images/tables/filter-sort-and-search.png" alt="The filter panel open over the grid with one condition where Employees is greater than 50, joined by and to a group of two conditions on Industry, and an Add filter group button beneath it." />
</Frame>

## Filter to the rows you want

<Steps>
  <Step title="Open Filter">
    Click **Filter** in the toolbar, or choose **Filter on this column** from a column's header menu to start already on that column.
  </Step>

  <Step title="Add a condition">
    Click **Add filter** for a row, or **Add filter group** to nest one **and**/**or** block one level deep.
  </Step>

  <Step title="Pick an operator">
    Operators follow the column's type. Text offers **contains**, **starts with** and **is empty**. Numbers, dates and computed columns add their own, like > and **has an error**.
  </Step>
</Steps>

## Sort by more than one column

<Steps>
  <Step title="Open Sort">
    Click **Sort** in the toolbar. The first row reads **Sort by**, and every row after it reads **then by**.
  </Step>

  <Step title="Add up to three">
    Click **Add sort** to stack another column, and drag a row to change which one wins first.
  </Step>
</Steps>

Direction reads in the column's own words: text sorts **A → Z**, numbers sort **smallest first**, dates sort **oldest first**.

## Search inside the table

Click **Search** in the toolbar, or press Cmd+F, to open a search box over the grid. Type to see how many rows match, and press Enter or Shift+Enter to step through them.

## Check what a run covers

A filter changes only what is on screen. A column's run menu still processes the rows it is set to cover, whether that is every row or a chosen few, filtered or not.

To run just what you are looking at, tick the filtered rows yourself and open **Actions**. See [Run columns](/tables/run-columns) for the full run menu.

## Good to know

<AccordionGroup>
  <Accordion title="Why did Add filter grey out?">
    A table allows eight conditions in total, however they are grouped. Remove one before adding another.
  </Accordion>

  <Accordion title="Can I nest a group inside a group?">
    No. Groups go exactly one level deep, so a top-level **and**/**or** can hold one group with its own **and**/**or**, never a group inside a group.
  </Accordion>

  <Accordion title="What happens to a filter on a column I delete or retype?">
    It is dropped automatically, along with any group it would leave empty. A table never goes blank from a filter pointing at something that no longer exists.
  </Accordion>

  <Accordion title="Can I match more than one value in one condition?">
    Yes. Choose **contains any of** or **does not contain any of** and separate the values with commas.
  </Accordion>

  <Accordion title="Does a saved view keep my filter and sort?">
    Yes. Saving a view captures both together, and switching views swaps both at once. The built-in **All rows** view always starts from no filters.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Views" icon="layout-grid" href="/tables/views">
    Save a filter and sort together as a view you can switch back to.
  </Card>

  <Card title="Run columns" icon="play" href="/tables/run-columns">
    Choose which rows a column actually runs over.
  </Card>
</CardGroup>
