[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定の列の特定の単語を検索して その単語の横の列に文字を入れたい』(ひろ)
いつもお世話になっております
C列に完了という文字があったらその行のD列に○を入れたいのですがどうすればいいですか
できればマクロでしたいです
よろしくおねがいします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
いずれにせよ、それだけの事なら数式で十分に思います。 マクロなら、行数分ループしながらセルを調べて、イコール、またはLike文で "*完了*" かどうかを判定。 見つけた場合はD列の同じ行に "○" を代入、とするだけでしょう。
(???) 2019/01/29(火) 11:57
どうせ答えてもMougとかにマルチポストしてコードを作ってもらおうとするんだろうけど、
[[20190114213127]] 『競馬の出馬表処理 サンプルファイル付き』(ひろ)
↑で ご自身が提示されたコードの中に Like演算を使ったものがあるので、まずそちらの理解を進めてみてはどうでしょうか。
もっとも、???さんがおっしゃるようにLike演算子で文字列チェックするなら、ワイルドカードと組み合わせたほうが良いと思いますが・・・
>行数が変動するのも厄介でどうやればいいか悩んでいます
最終行を取得する方法も同様、過去ログみると既にアドバイス受けてますよ。
(もこな2) 2019/01/29(火) 12:39
自分で調べる事をせずに他人を頼っては駄目。 初心者だから…、とか思うのは「甘え」であり、初心者こそ人よりたくさん調べ、たくさん試し、時間をかけないとです。
(???) 2019/01/29(火) 17:15
(ひろ) 2019/01/29(火) 17:21
関係ないですが、おそらくエディタに入力したのではなく、コメント返信欄に手打ちしたためでしょうけど、インデントくを付けて見やすくしたほうがいいとおもいます。
そうすると 無駄なelse があることに気づくでしょう。
また、???さんが 2019/01/29(火) 13:13にコメントされている方法は、私も定番だと思うので、「ExcelVBA 最終行」なんてキーワードでしらべればすぐに見つかると思います。(というか見つかります)
↓こちらでも、biさん、マナさんが使っておられますね。
[[20181212161757]] 『列の値を削除したいです。』(ひろ)
このほかUsedRange.Rows.Countを使うことを否定はしませんが、その場合、UsedRangeがA1以外から始まることもあり得るので、留意しておいたほうがよいでしょうね。
例えば、新規のシートのB2〜D5にだけ適当に入力(使用)すると、↓のコードでは「A5」ではなく、「A4」と表示されます。
Sub てすと()
With ActiveSheet
MsgBox .Cells(.UsedRange.Rows.Count, "A").Address(0, 0)
End With
End Sub
また、セルに何も入力してなくても、塗りつぶし等の書式が設定されていれば、使用セルとみなされます。
(もこな2) 2019/01/30(水) 00:15
Sub Sumple()
Dim i As Long
With ThisWorkbook.Sheets("Sheet1")
For i = 2 To .Cells(.Rows.Count, "C").End(xlUp).Row
If .Cells(i, "C") = "完了" Then
.Cells(i, "D") = "○"
End If
Next i
End With
End Sub
この形は結構色んなところで使える基本のテンプレートみたいなものです。 難しいことを考えるより、このテンプレートを先に書いてあとから分かるところを埋めていく 書き方もありですよ。
Sub Sumple()
Dim i As Long
With 作業シート名
For i = 開始行 To 最終行
If 条件式 Then
処理
End If
Next i
End With
End Sub
(TAKA) 2019/01/30(水) 13:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.