- ベストアンサー
エクセルで毎回の置換を簡単にできますか
初めましてm(_ _)mエクセル初心者です。同じような質問と回答が多くあり、困り果てて皆様のお知恵を拝借することにしました。エクセル2000を使用しています。あるシステムからの出力がエクセルファイルとして出てきます。システム自体を改造することは不可能です。出力例としては、以下の形式です。 title type A1 staf Date 商品名1 D ZE 山田 2007/04/20 2007/05/18 商品名2 E ZR 鈴木 2007/05/20 2007/08/04 商品名2 G ZH 田中 2007/09/20 2007/10/30 例えば、typeのD:一般 E:特殊 G:汎用 を意味します。ZE、ZRとかも、それぞれに意味があります。 これらのエクセル出力を下記のように編集したいと考えています。 商品名 型式 部署 担当 日付 商品名1 一般 販売部 山田 2007/04/20 2007/05/18 商品名2 特殊 営業部 鈴木 2007/05/20 2007/08/04 商品名2 汎用 広報部 田中 2007/09/20 2007/10/30 データも膨大ですし、各々に一括置換していくのは毎回毎回手間がかかります。ファイルは、H190420.xlsとかH190421.XLSなどの名称で毎日出力されてきます。 簡単な操作で置換する方法があればお知恵を貸して下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#4 です。 こんにちは。 >早速、チャレンジしましたが、いろいろエラーが出て上手くいきませんね。 おそらく、設定の仕方自体が分からないと思うのです。私のは、分かりやすく書いたつもりですが、やはり、いきなりだと、どこにポイントを置くか分からないのかもしれません。本人が、それをどうしても完成したいという気持ちがあって、初めて成立するものです。 #2さんの記録マクロになれることですね。記録マクロを一度もしたことがないと、通常のマクロの設定は分からないかもしれません。ただ、器用な人は、マクロは必要ないかもしれません。
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
#4 の文章の訂正 誤り >'検索単語数と置換文字数が違っているとエラーが発生します。 両方とも単語数です。 '検索単語数と置換単語数が違っているとエラーが発生します。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 こんな感じでいかがでしょうか? 標準モジュールならどこに登録してもよいのですが、これをツールボタンにするには、「個人用マクロブック」の標準モジュールが最適です。ただし、毎回、出だしの部分の位置が変わるようなら、オプションを付けなくてはいけません。 以下は、A1 が最初になるように設定されています。以下の要領で、検索文字と置換文字を書き入れてください。順番と数は必ず合っていなくてはなりません。 Excel2000 では、試験をしておりませんが、たぶん大丈夫だと思います。 '標準モジュール '------------------------------------------------------------------- '注意: 'コンマ(,)で区切ります。ただし、絶対にスペースは入れてはいけません。 '検索単語数と置換文字数が違っているとエラーが発生します。 '型式 Private Const TYPE_S As String = "D,E,G" Private Const TYPE_R As String = "一般,特殊,汎用" '部署 Private Const DEP_S As String = "ZE,ZR,ZH" Private Const DEP_R As String = "販売部,営業部,広報部" 'タイトル行 Private Const mTITLE As String = "商品名,型式,部署,担当,日付" '*左端上のデータの出だしの場所 Const FIRST As String = "A1" Sub ReplaceChar() Dim FirstCell As Range Dim arTitle As Variant Dim Sers1 As Variant Dim Reps1 As Variant Dim Sers2 As Variant Dim Reps2 As Variant Dim ret As Integer Dim i As Long Dim j As Long arTitle = Split(mTITLE, ",") Sers1 = Split(TYPE_S, ",") Reps1 = Split(TYPE_R, ",") Sers2 = Split(DEP_S, ",") Reps2 = Split(DEP_R, ",") Set FirstCell = ActiveSheet.Range(FIRST) FirstCell.Resize(, UBound(arTitle) + 1) = arTitle Application.ScreenUpdating = False '空白の除去 Do FirstCell.EntireColumn(3).Replace " ", " ", 2, , False '全角空白 FirstCell.EntireColumn(2).Replace " ", "", 2, , False ret = WorksheetFunction.CountIf(FirstCell.EntireColumn(2), "* ") Loop While ret > 0 For i = LBound(Sers1) To UBound(Sers1) FirstCell.EntireColumn(2).Replace What:=Sers1(i), _ Replacement:=Reps1(i), _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ MatchCase:=False Next i '空白の除去 Do FirstCell.EntireColumn(3).Replace " ", " ", 2, , False '全角空白 FirstCell.EntireColumn(3).Replace " ", "", 2, , False ret = WorksheetFunction.CountIf(FirstCell.EntireColumn(3), "* ") Loop While ret > 0 For j = LBound(Sers2) To UBound(Sers2) FirstCell.EntireColumn(3).Cells.Replace What:=Sers2(j), _ Replacement:=Reps2(j), _ LookAt:=xlWhole, _ SearchOrder:=xlByColumns, _ MatchCase:=False Next j Application.ScreenUpdating = True Set FirstCell = Nothing End Sub
お礼
ありがとうございました。 詳細に記載して頂き感謝しています。 早速、チャレンジしましたが、いろいろエラーが出て上手くいきませんね。初めてのマクロなので、大変勉強になります。
- asapinya
- ベストアンサー率36% (40/109)
かんたんなVBAを作ってしまうのも手ですよ。 1.[ツール]-[マクロ]-[新しいマクロの記録] マクロ名は適当に。「マクロの保存先」は個人用マクロブック。 2.適当なセルをクリックしマクロの記録終了ボタンを押して終了させる。 以上の作業で個人用マクロの記録準備ができていますので、編集画面を下記の方法で開きます。 [ALT]+[F11] VisualBasicEditorが開きます。 画面に「プロジェクト」というウィンドウがなければ[CTRL]+[R]で出します。 その中に「VBAProject(PERSONAL.XLS)」という項目があるのでダブルクリック。 さらに、その中から「標準モジュール」をダブルクリック。 で、さらに、「Module1」をダブルクリック。 すると -------------------------------------------------------------------- Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/4/21 ユーザー名 :おなまえ ' ' Range("F16").Select End Sub -------------------------------------------------------------------- といった内容の画面が出てきますので、上下を残して消します。 -------------------------------------------------------------------- Sub Macro1() End Sub -------------------------------------------------------------------- 消した部分の内容を変更します。 -------------------------------------------------------------------- Sub Macro1() While Selection.Value <> "" If Selection.Value = "D" Then Selection.Value = "一般" ElseIf Selection.Value = "E" Then Selection.Value = "特殊" ElseIf Selection.Value = "G" Then Selection.Value = "汎用" End If Selection.Offset(0, 1).Select If Selection.Value = "ZE" Then Selection.Value = "販売部" ElseIf Selection.Value = "ZR" Then Selection.Value = "営業部" ElseIf Selection.Value = "ZH" Then Selection.Value = "広報部" End If Selection.Offset(1, -1).Select Wend End Sub -------------------------------------------------------------------- 簡単に説明すると、 While Selection.Value <> "" セルポインタのあるセルの内容が「からっぽ」でないときは Wend までの内容を繰り返し行いなさいよ。 If Selection.Value = "D" Then Selection.Value = "一般" セルポインタのあるセルの内容が「D」だったら、その選択しているセルの内容を「一般」にしてちょうだいな。 以下同じようなことの繰り返し・・・ Selection.Offset(0, 1).Select セルポインタを右に1こ移動 If Selection.Value = "ZE" Then Selection.Value = "販売部" セルポインタのあるセルの内容が「ZE」だったら、その選択しているセルの内容を「文字列1」にしてちょうだいな。 以下同じようなことの繰り返し・・・ Selection.Offset(1, -1).Select セルポインタを下に1こ、左に1こ移動 てな感じです。 最初は形式の一番上の記号にセルポインタを合わせておいてください。 おそらくここに出てきている以上に記号が多いと思いますので、その場合はElseIf~の行を追加してください。 また上記では形式の隣に部署があるということを想定してセルポインタの移動をしていますが、位置が違うときはそれに合うように数字を書き換えてください。 マクロを使用する時は[ツール]-[マクロ]-[マクロ]から実行します。
お礼
ありがとうございました。 詳細に記載して頂き感謝しています。 早速、チャレンジしました。 マクロは初めて使うので、いろいろエラーが出て上手くいきませんが、試行錯誤でやっています。
- Bickyon
- ベストアンサー率41% (42/101)
「ツール」-「マクロ」-「新しいマクロの記録」で、マクロ名は適当に付与して下さい。その際に「マクロの保存先」は個人用マクロブックとして下さい。 1.Ctrl+hを押して、置換のダイアログを表示させます。 2.検索する文字列に「D」、置換後の文字列に「一般」と入力し、全て置換ボタンをクリックします。 3.その後、ZEは販売部、Eは特殊というように全ての置換操作を繰り返して下さい。 4.全ての置換操作が終了したら、マクロの記録終了ボタンをクリックします。 これで、置換マクロができあがります。エクセルを閉じるときに「個人用マクロブックを保存するか」と聞いて来ますので、保存して下さい。 未置換のH1904XX.XLSを開いて、「ツール」-「マクロ」-「マクロ」で先ほど作成した置換マクロを実行すれば出来上がりです。
お礼
ありがとうございました。 マクロは苦手意識が強いのでほとんど使いませんでした。 マクロの勉強ができ、非常に参考になりました。 これを機会に、使っていきたいと思います。
- kakkysan
- ベストアンサー率37% (190/511)
typeの列がB列とします。C列を「挿入」で空けます。 そのC列(C2)に、 =IF(B2="D","一般",IF(B2="E","特殊","汎用")) としてみてください。後はオートフィルで必要な行までコピーします。D,E,GのB列は「表示しない」にしておけばよいでしょう。 「vlookup」を使う方法もありますが、割愛します。 ZE、ZRとかも同様に「if文」で処理できるでしょう。
お礼
ありがとうございました。 IF文という手がありましたか。 関数はあまり使用しないのですが、簡単そうで便利だと思います。
お礼
ご助言ありがとうございます。 何回か試しているうちに、何となく理解してきました。 やってみると、次にこうしたらどうなるかと、結構おもしろくなってきました。最初は、皆様に回答して頂いたものを貼り付けてやっていましたが、エラーが出てどこがまずいのかなとちんぷんかんぷんでした。確かに#2さんの記録マクロは、自動的にマクロが出来ていて、初心者には助かります。