• 締切済み

【マクロ】特定の文字を追加

こんにちは。 エクセルで管理している一覧表があり、2万行程になります。 そこへ特定の列に文字を追加したいのですが、 行数も沢山あり、気が遠くなりそうです。 添付します画像で、C列は各メーカーが入力されており、 D列(型番)に特定文字で【有り】をC列(メーカー)がA社とB社以外という 条件で追加したいです。 何かいい方法が有りましたら、ご教授頂きたいです。 宜しくお願い致します。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

>何故か4010行目以降は、反映されなかったです。 >原因等考えられることはございませんでしょうか? 申し訳ありませんでした。 最終行のチェックでA列の最終行をチェックしていましたので修正してください。 n = Cells(Rows.Count, 1).End(xlUp).Row      ↓ n = Cells(Rows.Count, c - 1).End(xlUp).Row メーカー名のC列の最終行に変更すれば問題ないかと思います。

eco2012
質問者

お礼

ありがとうございます!本当に助かりました!!

全文を見る
すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.7

2017-12-28 17:44:34 回答No.3 への追記です。 >試してみましたが、私のやり方が変だったのか、うまく動きませんでした。 > 【有る】がつきませんでした。  Const Maker1 = "A社"  Const Maker2 = "B社" を  Const Maker1 = "A社"  Const Maker2 = "B社"  つまり半角 にしてみてください。

eco2012
質問者

お礼

ありがとうございます。試してみます!!ご教授助かりました。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.6

>何かいい方法が有りましたら、ご教授頂きたいです。 VBAでの処理を希望されているようですがマクロウィルスの危険性がありますのでマクロ有効ブックは避けた方が良いでしょう。 しかし、2万行は少々多いので関数での処理に向きません。 簡単なVBAコードを添付画像で提供しますので確かめてください。 但し、提示のコードは"型番"と入力されたセルをアクティブにして実行しないと何もしません。 また、既に"【有り】"が追加された型番については"【有り】"を取り除いて改めて追加しています。 尚、テストに使うブックは複製を使ってください。(原本はバックアップとして残すこと)

eco2012
質問者

お礼

ご回答ありがとうございます。補足が解決できましたらベストアンサーとさせて頂きたいです。ご回答お待ちしております。

eco2012
質問者

補足

ご丁寧にありがとうございます。まさにこちらがやりたかったことです。 ですが、何故か4010行目以降は、反映されなかったです。 原因等考えられることはございませんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

あぁ、なるほど、そこまで読めませんでした。 失礼しました。 だとしたら、式を 式:=IF(AND(C3<>"A社",C3<>"B社"),D3&"【有り】",D3) にしてみると良いと思いますよ。

eco2012
質問者

お礼

こちらこそ、言葉足らずで申し訳ございませんでした。ご教授頂きありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

今の列を、後ろにコピーして移す。 今の列に、イコールで後ろの行を差す。 フィルターで除きたい行を隠し、一番上に、&で入れたい文字列を書き加える。 その行を見えているすべてにコピーする。 (コピー以外の方法だと隠した行にも反映すると思います。) フィルターを解除し、コピーアンドペーストで、数式を値に置き換える。 セルの文字列の最初か最後に入れるのなら、これでできるかと。

eco2012
質問者

お礼

ご丁寧にありがとうございます。色々と試してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.3

データが3行目から始まっている前提で。 なお、途中に空行があることから どの行(何行目)まで処理すればいいのかわからないので シートの末尾の行から上方向に処理しています。 そのため、若干性能が劣ります。 また、VBAのイロハのイ程度はわかっている前提で コードのみを書きます。  Sub TxtAdd()  Dim wkLineCounter As Long  Const Maker1 = "A社"  Const Maker2 = "B社"  With ThisWorkbook.Sheets(1)   For wkLineCounter = Rows.Count To 3 Step -1    If ((.Cells(wkLineCounter, 3).Value <> Maker1) And _     (.Cells(wkLineCounter, 3).Value <> Maker2) And _     (.Cells(wkLineCounter, 3).Value <> "")) Then     .Cells(wkLineCounter, 4).Value = _      .Cells(wkLineCounter, 4).Value & "【追加】"    End If   Next wkLineCounter  End With   End Sub

eco2012
質問者

お礼

コードまで書いてくださり、誠にありがとうございます。

eco2012
質問者

補足

試してみましたが、私のやり方が変だったのか、うまく動きませんでした。 【有る】がつきませんでした。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

2通り紹介。 その1 例えばG3セルに   式:=IF(AND(C3<>"A社",C3<>"B社"),"【有り】",D3) として、G列一杯にフィル。 G列の3行目以降を選択、コピーして、D3セルに「値を貼り付け」。 完了。 その2 表の中のどこでも良いのでどこかを選択した状態で リボンの「データ」から「フィルター」。 C列(メーカー)の▼をクリックすると、 存在するエントリーが一覧で見られるので、 A社とB社のチェックを外して、OK。 抽出されたリストの全行D列を選択した状態で、 そのまま「【有り】」と入力し、Ctrl+Enterで確定。 フィルタを解除して、完了。 どちらの場合も「C社」の分も書き換わりますが、 それでいいのかどうかはご判断ください。 番外として、VBAで頑張る方法もありますが、 おそらくVBAを理解して準備する手間を考えると ソレは厳しいと思いますので割愛です。

eco2012
質問者

お礼

ご回答ありがとうございます。 試してみました!元のデータが書き換わってしまうため、元のデータはそのまま+【有り】とするのが希望です。勉強になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • _backyarD
  • ベストアンサー率34% (199/580)
回答No.1

今回限りの作業であれば 1. D列の隣あたりに列を追加する 2. そこに「=IF(AND(C3<>"A社", C3<>"B社"), D3 & "【有り】", D3)」   のような式を入れる。 で、新しく追加した列にお望みの結果が入るかと。 あとはそれを文字列としてコピー&ペーストしてD列にかぶせればいけそうですよ。 式の内容は ・IF文に「有り」を付記する条件を書く。  条件を満たす場合、D列の内容+有りを、  条件を満たさなければD列をそのまま写す。 ・IFの条件は「AND」関数で以下の2条件を並べ、どちらも満たす場合に  Trueになるようにする。   - C列がA社でない   - C列がB社でない ただし、この方法は列を追加して一時的に式を追加する必要があるので、定期的に、自動的に処理したい場合には使えません。その場合は、上記のような処理を行うVBAプログラムを組む必要があるかと思います。

eco2012
質問者

お礼

ご回答頂きありがとうございます。一度試してみますね。 ただ、定期的に更新されるので(更新頻度はほぼ毎日)、随時更新部分は、 既に【有り】を入れるようにするので問題はないです。 今までの積み重なった2万行に対してその作業をしたいです。 VBAプログラムで組んだほうが良さそうです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法

    エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法 表題のとおりですが、エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法について教えてください。 特定の文字(C列にあります)が含まれている行から5行下の先ほどとは違う文字(これもC列にあります)までを削除したいのです。 それがたくさんあり大変困っております。 エクセルを起動してマクロの記録を行い手作業で5回削除し記録終了としたのですが、 5回以上削除したい場合は操作が行われませんでした。 これをマクロで行うにはどういう式を作ればいいでしょうか? 宜しくお願いします。

  • エクセルで特定の文字を含む行を集めたい

    エクセルで定の文字を含む行を捜して並べて集めたいのですが…。つまり、表などの備考欄で特定の文字列(食費等の2文字)を探して、その文字がある行を続けて並べたいのですが…どなたか、よろしくお願いします。

  • エクセルで特定の文字列が入った行を非表示にしたい

    エクセル(97)で特定の列のセルに特定の文字列が入った行を非表示にする機能はありますでしょうか? 例えばC列の3行目以降から「無し」という文字列が入ったらその行を非表示にしたいのですが・・・

  • エクセル:文字列間の行を抽出

    エクセルファイルで1つのシートに複数の表がひたすら縦に並んでいます。それぞれの表が別々のシートに記載されるようにしたいと思っています。 どの表も基本的な書式は同じなので列数は同じなのですが、行数は表ごとに異なります。 また各表の右下(C列)にTotalという文字列が必ずあります。 文字列Totalがある行の直下の行から次のTotalのある行まで抽出して、シートを作成できれば良いのだと思うのですが、どうすれば可能になるのか分かりません。 どなたか教えていただけ無いでしょうか。

  • エクセルで文字を追加

    こんにちは。 エクセルでA1に19Fと書かれてるセルを B1のセルにC-19Fと特定の文字列を追加したいのですがどうすればいいのかわかりません。単純に="c-"A1としてみたのですがエラーでうまくいきません。 何かアドバイス宜しくお願いします。

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • エクセルのマクロで特定の文字があるときだけコピーできるようにしたい

    エクセルのマクロで特定の文字があるときだけコピーできるようにしたい エクセルでこういう表があるとします ココカラ 1 * 2 b 15 3 * 4 d 19 5 e 25 6 * 7 g 35 8 * 9 j 46 10 k 54 ココマデ このような表があるとき、マクロを使ってもしB列に「*」以外の文字(この場合アルファベットのb) があるときは左のセル(2)をずっと下のセルにコピー(仮にA50とします)した後、右のセル(15)をB51にコピー、 次は文字が「*」なのでコピーはせずにd列になったら4と19をC50,D51にコピー・・・ という作業をセルに「ココマデ」と書いているところまで繰り返す、というマクロを作りたいのですが、どうすれば いいのでしょうか?

  • エクセルで行内特定文字で色塗り、特定文字非表示。

    エクセルで行内特定文字で色塗り、特定文字非表示。 エクセル2000です。 B列30から10-50-01~20、11-51-01~30とかの連番番号、C列30から O列30までの行に各情報入力がしてあります。 行いたいのは、B列30以降に10-50-01~20と記入してあれば-01の行中の F、G、H、J、K、L、M、Oと、とびとびですが、文字表示をさせ、それ以外は (-02から-20まで)非表示(白色文字色)とし、かつ、K30以降のセル内に「OK」の文字が 入力されると、その行だけセルに色つけをしたいです。 書式でできますでしょうか? 現在、=RIGHT($B30,3)<>"-01"で-01を表示、それ以降は非表示させていましたが、K30以降のセル内に「OK」での行に色つけが必要になり、方法がわかりません。 よろしくお願いします。

  • Excelで特定文字が含まれる行の別のセルをずらす

    添付画像にあるように、2つの列に記号とキーワードが入力されており、上から順番に検索し、キーワード列に特定文字(この場合”りんご”)を含むセルがある場合、記号列のみを下に順番にずらしていきたいと思っています。 行数が1万行くらいある為、マクロなどで実現したいです。 よろしくお願いいたします。

  • エクセルのマクロで文字の置換について

    エクセルのマクロを使った文字の置換についてお聞きしたことがありましす。 やりたいイメージは例として添付の画像としてアップしましたが、 ・エクセルシートに英数文字列の表がある(例では2行2列ですが、実際は6行48列ぐらいです) ・その表を各英数文字列の間に半角カンマ","を入れて、メモ帳に貼り付けたい   ※実際メモ帳に貼り付ける動作は手動で行うので、クリップボード上で「各英数文字列    の間に半角カンマ","が入っている状態」で構いません。 ・各英数文字列の最初の2文字は必ず"0a"、その後の英数字は3桁または4桁です。 ちなみに、エクセルシートで英数文字列の表をそのままコピーしてメモ帳でペーストすると 各英数文字列の間にスペース(空白)が入ってしまいます。 その後、メモ帳で置換などを使い半角カンマ","を入れてもいいのですが、そこまでをマクロで行いたいと思っております。 上記のことがそもそもエクセルのマクロで出来るかどか分かりませんが、なにか有用な方法がございましたらご教授お願い致します。  ※使用OS:Windows7、エクセルバージョン:2007

専門家に質問してみよう