• ベストアンサー

EXCEL関数式の置換(数字あり)

したいことは 置換前 : =Index(A:B,1,1)&" "&Index(A:B,1,2) 置換後 : =Trim(Index(A:B,1,1)&" "&Index(A:B,1,2)) Trim関数を加えて、両端の空白を除去したいのです。 置換前の式は500行程埋め込んでいます。 1回の置換でしたいのですが、数字部分は可変なので、わかりません。 1,1 1,2の部分をワイルドカードでできればいいのですが・・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

一番肝心の部分, >1回の置換でしたいのですが、数字部分は可変なので、わかりません。 あなたが具体的にどんな式を「数字を変えて」書いたので出来ないのか,ご質問に書かれてません。 そこを敢えて勝手な空想で補うなら,「わざわざ数字を変えて式を書きました」みたいな使いにくいことをするのをやめて,最初から数式を =TRIM(A1&" "&B1) と書いて下向けに500行つるつるっとコピーしてしまえば終わりです。 で,ご質問の直接の回答として。 不明の理由によって「どうしても今のこの式を絶対使いたい」のでしたら,エクセルでは「1回の置換の操作」でやっつける方法はありません。 可能な手順: 1.= を zzz に全て置換する 2.2) を2)) に全て置換する 3.zzz を =TRIM( に全て置換する と出来ます。 #セルの書式設定と組み合わせて置換を2回で済ませる手もありますが,いずれにしても3回(またはそれ以上)操作する事には変わりありません

mobiblu
質問者

補足

回答ありがとうございます。 可能な手順:でするとできました。 私のしたいことが説明不足でした。カタログ作成の仕事をしています。EXCELで掲載する商品をシート(1)に縦に並べて、シート(2)にシート(1)の商品名をカタログ的に関数で反映させます。 以下のようなイメージです。 シート(1) 注文番号 商品名 ---------------- 1001 シャツ白SS 1002 シャツ白S 1003 シャツ白M 1004 シャツ白L 1005 シャツ白LL 1006 シャツ黒SS 1007 シャツ黒S 1008 シャツ黒M 1009 シャツ黒L 1010 シャツ黒LL シート(2) 1001 シャツ白SS┃1002 シャツ白S┃1003 シャツ白M┃1004 シャツ白L┃1005 シャツ白LL 1006 シャツ黒SS┃1007 シャツ黒S┃1008 シャツ黒M┃1009 シャツ黒L┃1010 シャツ黒LL シート(2)のA1セルに"=Index(シート(1)!A:B,1,1)&" "&Index(シート(1)!A:B,1,2)"の式を設定。(最初の質問で、式内にシート名がなかったです。失礼しました。) 業務命令で『1006と1007の間に着用しているモデル写真を載せろ』があると、シート(1)の1006と1007の間に行を挿入します。そうするとTrim(a1&" "&b1)ではダメです。業務命令に対応するとこうなります。 シート(1) 1006 シャツ黒SS モデル写真 1007 シャツ黒S シート(2) 1006 シャツ黒SS┃モデル写真  ┃1007 シャツ黒S┃1008 シャツ黒M┃1009 シャツ黒L 1010 シャツ黒LL┃

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

>1回の置換でしたいのですが  ⇒エクセルの置換は正規表現できませんので無理です。   TRIM関数の右かっこが難しいと思いますので、マクロでは如何でしょうか。 一例です。  対象のシートタブ上で右クリック→コードの表示→以下のサンプルを貼り付け→F5キー押下  F5押下前に数式の列、開始行(仮にC列、1行目)を調整して下さい。  マクロ削除は、貼り付けたコードを全削除して、マクロ画面を終了して下さい。 Sub sample() 列 = "C" 開始行 = 1 For i = 開始行 To Cells(Rows.Count, 列).End(xlUp).Row Cells(i, 列).Formula = "=trim(" & Mid(Cells(i, 列).Formula, 2) & ")" Next End Sub

mobiblu
質問者

お礼

回答ありがとうございます。正規表現は無理ですか・・・。書いて頂いたマクロを元にして、マクロを書いたらできました。ただ、自分はマクロが理解できる方ですが、これを利用するであろう職場の他の人はPCアレルギーなので、マクロ(プログラム)はなるべく避けたいです。EXCELを業務で効率的に使いたいならマクロぐらい勉強しろと言いたいですが。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

式を変えるのではなくお示しの式でしたらA列を選択してから「データ」タブの「区切り位置」を選択し、表示の画面でデータのファイル形式では「スペースによって右または左・・・・」にチェックをして「次へ」、再び「次へ」、さらに「完了」ボタンをクリックすることでA列に入力された文字列の空白を無くすことができます。 この操作をすることで式を置換により変えるなどの操作は必要としません。

mobiblu
質問者

お礼

回答ありがとうございます。EXCEL2000のせいか、ご指摘のように進めません。データ→区切り位置…ですると、したいこととは異なりました。関数で両端の空白を除去したいのです。

関連するQ&A