# 検索と置換

- Human documentation: [https://docs.univer.ai/ja-JP/guides/sheets/features/find-replace](https://docs.univer.ai/ja-JP/guides/sheets/features/find-replace)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/sheets/features/find-replace.md](https://docs.univer.ai/ja-JP/guides/sheets/features/find-replace.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

- Source: [sheets/features/find-replace.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/features/find-replace.ja-JP.mdx)

---

#### Package metadata

```json
{
  "mobile": true,
  "preset": [
    {
      "client": "@univerjs/preset-sheets-find-replace",
      "locale": "@univerjs/preset-sheets-find-replace/locales/ja-JP",
      "style": "@univerjs/preset-sheets-find-replace/lib/index.css"
    }
  ],
  "plugins": [
    {
      "client": "@univerjs/find-replace",
      "locale": "@univerjs/find-replace/locale/ja-JP",
      "style": "@univerjs/find-replace/lib/index.css"
    },
    {
      "client": "@univerjs/sheets-find-replace",
      "facade": "@univerjs/sheets-find-replace/facade"
    }
  ],
  "server": false
}
```

検索と置換機能は、スプレッドシート内の特定の内容をすばやく検索して置換するための機能です。さまざまな一致オプションをサポートし、データ処理の効率化に役立ちます。

以下のプラグインの総合サンプルで検索と置換パネルを開き、この機能を試せます。

> Interactive example: [Open the playground](/playground/sheets/basic-via-plugin)

## プラグインモード

### インストール

#### npm

```bash
npm install @univerjs/find-replace @univerjs/sheets-find-replace
```

#### pnpm

```bash
pnpm add @univerjs/find-replace @univerjs/sheets-find-replace
```

#### yarn

```bash
yarn add @univerjs/find-replace @univerjs/sheets-find-replace
```

#### bun

```bash
bun add @univerjs/find-replace @univerjs/sheets-find-replace
```

### 使い方

```typescript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { UniverFindReplacePlugin } from '@univerjs/find-replace' // [!code ++]
import FindReplaceJaJP from '@univerjs/find-replace/locale/ja-JP' // [!code ++]
import { UniverSheetsFindReplacePlugin } from '@univerjs/sheets-find-replace' // [!code ++]
import '@univerjs/find-replace/lib/index.css' // [!code ++]
import '@univerjs/sheets-find-replace/facade' // [!code ++]

const univer = new Univer({
  locale: LocaleType.JA_JP,
  locales: {
    [LocaleType.JA_JP]: mergeLocales(
      FindReplaceJaJP, // [!code ++]
    ),
  },
})

univer.registerPlugin(UniverFindReplacePlugin) // [!code ++]
univer.registerPlugin(UniverSheetsFindReplacePlugin) // [!code ++]
```

## モバイル対応

まず[モバイルエディター](https://docs.univer.ai/ja-JP/guides/sheets/getting-started/installation.md#mobile-support)を設定します。このページのプラグインモードの初期化コードで、以下のデスクトップ登録を同じパッケージのモバイル版に置き換え、**文書を開く前に**完了してください。モデル、スタイル、言語ファイル、Facade は維持し、両方を同時に登録しないでください。

| パッケージ                           | デスクトップの登録                       | モバイルの登録                                 |
| ------------------------------- | ------------------------------- | --------------------------------------- |
| `@univerjs/find-replace`        | `UniverFindReplacePlugin`       | `UniverFindReplaceMobileUIPlugin`       |
| `@univerjs/sheets-find-replace` | `UniverSheetsFindReplacePlugin` | `UniverSheetsFindReplaceMobileUIPlugin` |

## プリセットモード

### インストール

#### npm

```bash
npm install @univerjs/preset-sheets-find-replace
```

#### pnpm

```bash
pnpm add @univerjs/preset-sheets-find-replace
```

#### yarn

```bash
yarn add @univerjs/preset-sheets-find-replace
```

#### bun

```bash
bun add @univerjs/preset-sheets-find-replace
```

### 使い方

```typescript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreJaJP from '@univerjs/preset-sheets-core/locales/ja-JP'
import { UniverSheetsFindReplacePreset } from '@univerjs/preset-sheets-find-replace' // [!code ++]
import UniverPresetSheetsFindReplaceJaJP from '@univerjs/preset-sheets-find-replace/locales/ja-JP' // [!code ++]
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
import '@univerjs/preset-sheets-core/lib/index.css'
import '@univerjs/preset-sheets-find-replace/lib/index.css' // [!code ++]

const { univerAPI } = createUniver({
  locale: LocaleType.JA_JP,
  locales: {
    [LocaleType.JA_JP]: mergeLocales(
      UniverPresetSheetsCoreJaJP,
      UniverPresetSheetsFindReplaceJaJP, // [!code ++]
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
    UniverSheetsFindReplacePreset(), // [!code ++]
  ],
})
```

## Facade API

完全な Facade API の型定義は [FacadeAPI](https://docs.univer.ai/ja-JP/reference/facade.md) で確認できます。

### インポート

> [!INFO: プラグインモード注意]
> Facade パッケージの手動 import が必要なのはプラグインモードのみです。プリセットモードには対応する Facade パッケージが内蔵されているため、追加の import は不要です。

```typescript
import '@univerjs/sheets-find-replace/facade'
```

### テキスト検索器の作成

`univerAPI.createTextFinderAsync()` はテキスト検索器を作成し、`FTextFinder` インスタンスを返します。

以下は [`FTextFinder`](https://docs.univer.ai/ja-JP/reference/facade/text-finder.md) の主なメソッドです。

| メソッド                  | 説明                                                             |
| --------------------- | -------------------------------------------------------------- |
| findAll               | 現在のシートで一致したすべてのセルを取得します。現在の一致セルは最後に見つかったセルになります。               |
| findNext              | 現在のシートの次の一致セルを取得します。存在する場合は次の一致セルを返し、現在の一致セルを次の一致セルに移動します。     |
| findPrevious          | 現在のシートの前の一致セルを取得します。存在する場合は前の一致セルを返し、現在の一致セルを前の一致セルに移動します。     |
| getCurrentMatch       | 現在のシートの現在の一致セルを取得します。                                          |
| matchCaseAsync        | 大文字小文字の一致オプションを設定します。true の場合は大文字小文字を区別して検索し、false の場合は区別しません。 |
| matchEntireCellAsync  | セル全体一致オプションを設定します。true の場合はセルの値全体と一致させ、false の場合は部分一致を許可します。   |
| matchFormulaTextAsync | 数式テキストの一致オプションを設定します。true の場合は数式テキストと一致させ、false の場合は値と一致させます。  |
| replaceAllWithAsync   | 一致したすべてのテキストを指定されたテキストに置換します。                                  |
| replaceWithAsync      | 現在の一致テキストを指定されたテキストに置換します。                                     |
| ensureCompleteAsync   | 検索操作が完了していることを確認します。特に現在のシートが変更された場合は、このメソッドで検索操作の完了を保証してください。 |

```typescript
// 現在のシートが空であると仮定します。
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getActiveSheet()

// 範囲 A1:D10 に値を設定します。
const fRange = fWorksheet.getRange('A1:D10')
fRange.setValues([
  [1, 2, 3, 4],
  [2, 3, 4, 5],
  [3, 4, 5, 6],
  [4, 5, 6, 7],
  [5, 6, 7, 8],
  [6, 7, 8, 9],
  [7, 8, 9, 10],
  [8, 9, 10, 11],
  [9, 10, 11, 12],
  [10, 11, 12, 13],
])

// テキスト '5' を検索するテキストファインダーを作成します。
const textFinder = await univerAPI.createTextFinderAsync('5')

// テキスト '5' を含むすべてのセルを見つけます。
const matchCells = textFinder.findAll()
matchCells.forEach((cell) => {
  cell.getA1Notation() // 例: D2, C3, B4, A5
})
```
