• ベストアンサー

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/7940)
回答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

  • エクセル関数で数字の置換えをしたいのですが。。

    エクセルの関数で数字の置換えをしたいのですがうまくいきません。 下記の条件で置き換え方が解る方、教えてください。 参照するセルがA1だとしたら、 A1が800の場合→B1は1000 A1が1000の場合→B1は1300 A1が2200の場合→B1は2800 という風に複数の条件で置きかえれるようにしたいと思っています。 (B1のセルに入れる関数が解りません) ちなみに「SUBSTITUTE」で入れてみたのですが、セルの書式設定で表示形式をユーザー設定にしていたものが外れてしまいます。 表示形式もユーザー設定にしたままの置換えが解る方教えてください。 宜しくお願いします。

  • 秀丸の置換で数字で始まる行だけを残したい

    秀丸の置換で数字で始まる行を残したいのですが可能でしょうか? 正規表現にチェックを入れて 検索に ^[0-9].*\n 置換に 空白 で数字で始まる行のみを消せることは分かったのですが、逆に数字で始まる行のみを残す方法がわからず、ご質問申し上げました。

  • エクセルの関数式について教えてください。お願いします。

    エクセルの関数式について教えてください。お願いします。   A B C D E F G H I J 1 9 6 1 3 4 7 8 2 5 10 2 6 4 9 3 8 7 1 5 10 2 3 1 3 -2 0 2 0 -4 1 1 -2 たとえばこのような表があります。 1の行にはランダムに1から10までの数字が入ります。 2の行にもランダムに1から10までの数字が入ります。 B1に6が入っています、A2にも同じ数字の6が入っています、 6はB1からA2に1つ上がっているので1 A1には9が入っています、C2にも9が入っています。 9はA1からC2に2つ下がっているので-2 D1には3が入っています、D2にも3が入っています。 3はD1からD2動いていないので0 といった具合に、1の行に入った数字が2の行の同じ数字を感知して その数字がどれだけ上がったのか、下がったのかを 3の行に表したいのですが、どのような関数を使ったらよいのでしょうか? 教えてください。お願いします。

  • Excel関数について

    Excel関数について質問です。 以下の二つ (1) 下のように、セルA1から入力されてるものを、1、2、3・・と数字順に並び替える良い方法はありますでしょうか。 A-1 A-10 A-10A A-100 A-2 A-20 A-22.5 ・ ・ A-555 ・ ・ (2) 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。 よろしくお願いいたします。

  • excel2013の式置換

    Aシ-トとBシ-トのデータ-をCシ-ト上の式で計算してます、式の27年を28年に置換したいと思います。すべて置換としますとセル1個ずつ値の更新となります。バ-ジョンは忘れましたが以前はすべて置換とすると一括変換して何個置換しました、となったのですがExcel2013はそれが出来ませんか?教えて下さいお願いいたします。

  • Excel関数での採番

    A列 B列 1  1 1  2 2  3 2  4 3  5 3  6 上記B列のように1から6までの行があるのですが2行毎にIndexをつけてA列のような形で採番するよい関数、式等ありますでしょうか? もし良いやり方をご存知でしたらご教授下さい。

  • EXCEL関数で比率の求め方教えてください。

     列方向(A列)に数字が入ってて、B列にそれぞれの比率を求めたいのです。小数第3位までを計算結果として、出したいのですが。。。   |  A  |  B   | 1行|  49 |      | 2行|  31 |      | 3行|  10 |      | 4行|(計)90 | 1.000| 単に B1=A1/A4    B2=A1/A4 という式ですると端数があるため、100%にならないですよね??どんな関数がありますか? よろしくお願いします。

  • エクセル関数式について教えてください。お願いします。

    エクセル関数式について教えてください。お願いします。    A B C D E F G H I J 1  5 7 1 4 3 9 8 6 2 10 2  6 7 4 9 3 5 1 2 10 8 3  7 0 1 2 0 -5 -4 1 1 -3 たとえば、このような表があります。 1の行にはランダムに数字が入ります。必ずD1に4が入るわけではありません、毎回変わります。 2の行にもランダムに数字が入りますが、1の行と同じだけ数字が入ります。でも毎回変わります。 そこで、1の行の数字が、2の行の数字を感知して、3の行にどれだけ上がって、どれだけ下がっているかを表したいのですが、関数式はありますでしょうか? 最高9、最低-9になります。1の行と2の行の数字が上下一緒なら0が入るようにしたいです。 教えてください、お願いいたします。

  • EXCEL関数についての質問です。

    EXCEL(2003)についての質問です。 関数にて、もし上行(※(1))のセルが空白の場合は空白、 そうでない場合は、2列隣(別シート)(※(2))のセルを返す。 ※(1)セル結合にて行を結合しています。 ※(2)同じ式(関数)ではじめのセル(結合されている)は、 A1次のセルはC1、E1、G1等1列飛ばしで参照。 としたいのですが、可能でしょうか? ちなみに添付画像のように結合行は可変します。 教えていただけると大変助かります。 例)    A            A    B    C    D    E    F    G 1 青森          青森       大阪       熊本 2 大阪 3 熊本   シート1                       シート2 宜しくお願い致します。

  • EXCEL関数について

    EXCEL関数について B1~E1セルが1箇所でも空白でない場合、A1セルに「1」を返す式を 「COUNTBLANK」関数と「IF」関数を使って試みたのですがうまく行きません。 B1~E1セルがすべて空白の場合はA1セルも空白になります。 ご教示頂きたくお願いいたします。