- 締切済み
【マクロ】特定の文字を追加
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>何故か4010行目以降は、反映されなかったです。 >原因等考えられることはございませんでしょうか? 申し訳ありませんでした。 最終行のチェックでA列の最終行をチェックしていましたので修正してください。 n = Cells(Rows.Count, 1).End(xlUp).Row ↓ n = Cells(Rows.Count, c - 1).End(xlUp).Row メーカー名のC列の最終行に変更すれば問題ないかと思います。
- HohoPapa
- ベストアンサー率65% (455/693)
2017-12-28 17:44:34 回答No.3 への追記です。 >試してみましたが、私のやり方が変だったのか、うまく動きませんでした。 > 【有る】がつきませんでした。 Const Maker1 = "A社" Const Maker2 = "B社" を Const Maker1 = "A社" Const Maker2 = "B社" つまり半角 にしてみてください。
お礼
ありがとうございます。試してみます!!ご教授助かりました。
- bunjii
- ベストアンサー率43% (3589/8249)
>何かいい方法が有りましたら、ご教授頂きたいです。 VBAでの処理を希望されているようですがマクロウィルスの危険性がありますのでマクロ有効ブックは避けた方が良いでしょう。 しかし、2万行は少々多いので関数での処理に向きません。 簡単なVBAコードを添付画像で提供しますので確かめてください。 但し、提示のコードは"型番"と入力されたセルをアクティブにして実行しないと何もしません。 また、既に"【有り】"が追加された型番については"【有り】"を取り除いて改めて追加しています。 尚、テストに使うブックは複製を使ってください。(原本はバックアップとして残すこと)
お礼
ご回答ありがとうございます。補足が解決できましたらベストアンサーとさせて頂きたいです。ご回答お待ちしております。
補足
ご丁寧にありがとうございます。まさにこちらがやりたかったことです。 ですが、何故か4010行目以降は、反映されなかったです。 原因等考えられることはございませんでしょうか?
- tsubu-yuki
- ベストアンサー率46% (179/386)
あぁ、なるほど、そこまで読めませんでした。 失礼しました。 だとしたら、式を 式:=IF(AND(C3<>"A社",C3<>"B社"),D3&"【有り】",D3) にしてみると良いと思いますよ。
お礼
こちらこそ、言葉足らずで申し訳ございませんでした。ご教授頂きありがとうございます。
- potatorooms
- ベストアンサー率28% (3506/12497)
今の列を、後ろにコピーして移す。 今の列に、イコールで後ろの行を差す。 フィルターで除きたい行を隠し、一番上に、&で入れたい文字列を書き加える。 その行を見えているすべてにコピーする。 (コピー以外の方法だと隠した行にも反映すると思います。) フィルターを解除し、コピーアンドペーストで、数式を値に置き換える。 セルの文字列の最初か最後に入れるのなら、これでできるかと。
お礼
ご丁寧にありがとうございます。色々と試してみたいと思います。
- HohoPapa
- ベストアンサー率65% (455/693)
データが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
お礼
コードまで書いてくださり、誠にありがとうございます。
補足
試してみましたが、私のやり方が変だったのか、うまく動きませんでした。 【有る】がつきませんでした。
- tsubu-yuki
- ベストアンサー率46% (179/386)
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を理解して準備する手間を考えると ソレは厳しいと思いますので割愛です。
お礼
ご回答ありがとうございます。 試してみました!元のデータが書き換わってしまうため、元のデータはそのまま+【有り】とするのが希望です。勉強になりました。ありがとうございます。
- _backyarD
- ベストアンサー率34% (199/580)
今回限りの作業であれば 1. D列の隣あたりに列を追加する 2. そこに「=IF(AND(C3<>"A社", C3<>"B社"), D3 & "【有り】", D3)」 のような式を入れる。 で、新しく追加した列にお望みの結果が入るかと。 あとはそれを文字列としてコピー&ペーストしてD列にかぶせればいけそうですよ。 式の内容は ・IF文に「有り」を付記する条件を書く。 条件を満たす場合、D列の内容+有りを、 条件を満たさなければD列をそのまま写す。 ・IFの条件は「AND」関数で以下の2条件を並べ、どちらも満たす場合に Trueになるようにする。 - C列がA社でない - C列がB社でない ただし、この方法は列を追加して一時的に式を追加する必要があるので、定期的に、自動的に処理したい場合には使えません。その場合は、上記のような処理を行うVBAプログラムを組む必要があるかと思います。
お礼
ご回答頂きありがとうございます。一度試してみますね。 ただ、定期的に更新されるので(更新頻度はほぼ毎日)、随時更新部分は、 既に【有り】を入れるようにするので問題はないです。 今までの積み重なった2万行に対してその作業をしたいです。 VBAプログラムで組んだほうが良さそうです。 ありがとうございました。
お礼
ありがとうございます!本当に助かりました!!