
No.6ベストアンサー
- 回答日時:
> 具体的にどのようにやるんでしょうか?
置換の対象が「大字」みたいな2文字以上の文字列を含むかどうかで
全く違ってきます。
元のデータを「テーブル1」
置換用を「置換テーブル」
として読み込んであるものとして
let
置換テーブル = #table(type table[前=text, 後=text],{{" ",""},{"字",""},{"#(lf)",""},{"ケ","ケ"}}),
テーブル1 = #table(type table[名前=text], {{"あいう かきく さしす"},{"あいう えお字かきく"},{"あいうえお#(lf)かきくけこ"},{"あいうケえこケさし"}}),
値の置換 = Table.AddColumn(テーブル1, "変換後",
each List.Reverse(
List.Generate(
()=> [i=0, name=[名前]],
each [i] <= Table.RowCount(置換テーブル),
each [
i = [i]+1,
name = Text.Replace([name],置換テーブル{i-1}[前],置換テーブル{i-1}[後])
],
each [name]
)
){0},
type text
)
in
値の置換
1文字→1文字の置換でよければ Text.Splitで分割したものを置換して
から結合しなおせばいいです。
No.8
- 回答日時:
こんばんは
当方Microsoft365ではなく2019のため、
No.7さんのレイアウトで配列数式版で考えてみました。
置換後はテーブルではなく、CHOOSE関数を使用している関係上、
$E$3,$E$4,$E$5,$E$6とダイレクトにセル指定する必要があります。
置換後の空欄セルは ="" でセットしてください。
ご参考です。
{=CONCAT(
IFERROR(
CHOOSE(
IFERROR(
MATCH(MID(A6,ROW(OFFSET($A$1,,,LEN(A6))),1),$D$3:$D
$6,0),
LEN(A6)+1),
$E$3,$E$4,$E$5,$E$6),
MID(A6,ROW(OFFSET($A$1,,,LEN(A6))),1))
)}
No.7
- 回答日時:
Microsoft365みたいなので一応 数式も載せておきます。
画像右のように置換テーブルを作成しておいて
B3に
=LET(_rng,[@名前],_rws,ROWS(置換テーブル[前]),INDEX(SCAN([@名前],SEQUENCE(_rws),LAMBDA(a,b,SUBSTITUTE(a,INDEX(置換テーブル[前],b),INDEX(置換テーブル[後],b)))),_rws))

No.5
- 回答日時:
> 一つ一つ、複数のSUBSTITUTEでくくりながら長い数式を書くしか
> ないでしょうか?
「数式でやる場合」ですか? バージョンによります。
LAMBDA関数が使えるなら再帰処理が可能です。
古いバージョンの場合は循環参照で反復計算させればできます。
個人的にはお勧めしません。
マクロでやれば当然できますが 置換の対応表があるならクエリでやっ
てもいいように思います。
ありがとうございます。
こちらOffice365なので最新です。
「LAMBDA関数」最近別件で耳にしましたので興味があります。
しかし本件はお勧めしないやり方なんですね。。。
> 置換の対応表があるならクエリで
具体的にどのようにやるんでしょうか?
・半角スペースを削除
・”字”を削除
・改行コードを削除
・”ケ”を”ケ”に置換
こういった複数条件を対応表にして実現できますか?
No.4
- 回答日時:
VBAで以下のようなコードを書くと、置換ができます。
Sub Main
Dim MotoText() As Variant, SakiTest() as Variant
Dim i As Integer
MotoText = Array(" ", "字", Chr(10), "ケ")
SakiText = Array("", "", "", "ケ")
Range("B1:B10") = Range("A1:A10")
For i = 0 To UBound(MotoText)
Range("B1:B10").Replace What:=MotoText(i), replacement:=SakiText(i)
Next i
End Sub
ありがとうございます。その方法だと複数の条件を併記すれば拡張性ありますね。
ネックと言えば一度実行すると履歴を辿って元に戻せない事ですね。
方法を考えて活用したいと思います。
No.3
- 回答日時:
こんにちは
置換の組み合わせの種類がいろいろあるような場合は、あまり有効ではありませんけれど・・
組み合わせ種類が少なければ、ユーザ定義関数にしておいて、それを利用するとか。
やっている内容は変わらないので処理としてはメリットはありませんけれど、セル内の関数式を単純化できるというメリットはあるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
数式の置換がうまく行かない
Excel(エクセル)
-
TEXT関数(負の値)を集計のため数値に変換したい
Excel(エクセル)
-
Excelのセル上の日付の不具合
Excel(エクセル)
-
4
至急!!!エクセルについて
Excel(エクセル)
-
5
【至急 詳しい方教えて下さい】Excelの表を変換したい
Excel(エクセル)
-
6
【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出
Excel(エクセル)
-
7
Excelで、例えば4月13日"となってるものを"4/13"に変えて、セルを移動したら、変えたとこ"
Excel(エクセル)
-
8
セル内で自分の好きなところで改行したいのですが、数式が入って無理なんです。 「折り返して全体表示」し
Excel(エクセル)
-
9
エクセル 可視セル部の数値の抜き出し方法
Excel(エクセル)
-
10
エクセルはマクロを使用するのでパソコンに良くないので使用しないでと言われた。「なぜ?」
Excel(エクセル)
-
11
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
12
エクセルの関数で、間違っている物はないのでしょうか
Excel(エクセル)
-
13
エクセルの表でその数字に当てはまる数字をいれたい
Excel(エクセル)
-
14
最後の12個の修正平均を算出したい。
Excel(エクセル)
-
15
excelで1行ごとに一気に削除する方法はありませんか?
Excel(エクセル)
-
16
エクセル関数の変わった使い方
Excel(エクセル)
-
17
Excelのセルにカレンダーを挿入する事はできますか? カレンダーを挿入してそこから先の日付を選択し
Excel(エクセル)
-
18
エクセル表作成についてお分かりになる方教えて下さい。 10項目程度のエクセルデーターを一件、一件、デ
Excel(エクセル)
-
19
文字列を数式として変換する事はできますか?
Excel(エクセル)
-
20
エクセルで年月日の桁数を揃えるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
エクセルでマウスカーソルの形...
-
5
エクセルで、変な矢印がでて、...
-
6
エクセルで作業ごとの時間をグ...
-
7
エクセルのセル内の余白の設定...
-
8
EXCELで2つの数値のうち大きい...
-
9
Excelで隣のセルと同じ内容に列...
-
10
エクセルである行以下全部を削...
-
11
エクセルで数値46.8601を度分に...
-
12
グラフの横・縦項目が全部表示...
-
13
EXCELで2列を参照し、重複する...
-
14
VBAで保存しないで閉じると空の...
-
15
あるセルに特定の文字列を打つ...
-
16
エクセル 特定の文字を入れる...
-
17
エクセルの画面で十字マークが...
-
18
エクセルで数式を入れても値が...
-
19
Excelで罫線を引いていな...
-
20
重複したデータ(空白は除く)のV...
おすすめ情報
公式facebook
公式twitter