[[20190129114306]] 『特定の列の特定の単語を検索して その単語の横の』(ひろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『特定の列の特定の単語を検索して その単語の横の列に文字を入れたい』(ひろ)

いつもお世話になっております
C列に完了という文字があったらその行のD列に○を入れたいのですがどうすればいいですか
できればマクロでしたいです
よろしくおねがいします

< 使用 Excel:Excel2010、使用 OS:Windows7 >


C列に入っているのは、「完了」だけなのですか? それとも「○○完了」みたいに、完了を含むのですか?

いずれにせよ、それだけの事なら数式で十分に思います。 マクロなら、行数分ループしながらセルを調べて、イコール、またはLike文で "*完了*" かどうかを判定。 見つけた場合はD列の同じ行に "○" を代入、とするだけでしょう。
(???) 2019/01/29(火) 11:57


完了だけです
それでループなのですが行数が変動するのも厄介でどうやればいいか悩んでいます
(ひろ) 2019/01/29(火) 12:22

[[20190121213642]] で静観するといいつつコメントします。

どうせ答えてもMougとかにマルチポストしてコードを作ってもらおうとするんだろうけど、
[[20190114213127]] 『競馬の出馬表処理 サンプルファイル付き』(ひろ)
↑で ご自身が提示されたコードの中に Like演算を使ったものがあるので、まずそちらの理解を進めてみてはどうでしょうか。

もっとも、???さんがおっしゃるようにLike演算子で文字列チェックするなら、ワイルドカードと組み合わせたほうが良いと思いますが・・・

>行数が変動するのも厄介でどうやればいいか悩んでいます
最終行を取得する方法も同様、過去ログみると既にアドバイス受けてますよ。

(もこな2) 2019/01/29(火) 12:39


行数の変動は、Rows.Countが終端行を示すから、そこのセルから.End(xlUp) した位置にあるセルの行が最終行、という方法も良く使われますよ。
(???) 2019/01/29(火) 13:13

ありがとうございますおかしな質問かもしれませんが
↑の質問って
最終行の取得のコードをどう書けばよろしいでしょうか列はc列ですいろいろとすいません
(ひろ) 2019/01/29(火) 17:04

過去にご自分で使った方法を取るか、または私が書いた、ほぼそのものずばりのキーワードで検索するか、いずれにせよ、過去に解決したことがあるなら、それくらい自分で調べなさい、という事です。

自分で調べる事をせずに他人を頼っては駄目。 初心者だから…、とか思うのは「甘え」であり、初心者こそ人よりたくさん調べ、たくさん試し、時間をかけないとです。
(???) 2019/01/29(火) 17:15


考えたのは
max_row = Worksheets("Sheet1").UsedRange.Rows.Count - min_row - 1

max_row = Worksheets("Sheet1").Rows.Count.End(xlUp)と思ったのですが・・・

(ひろ) 2019/01/29(火) 17:21


最終行の取得はわかりました
あとはセルの検索と隣のセルへの入力のところなんですが
(ひろ) 2019/01/29(火) 18:33

検索、と思うから難しく考えてしまっているのでは? .Cells(r, "C").Value = "完了" だったならば、.Cells(r, "D").Value = "○" にするだけの事ですよ。
(???) 2019/01/29(火) 22:05

ということは
if Cells(r, "C").Value = "完了"then
Cells(r, "D").Value = "○"
else
end if
ということでしょうか
(ひろ) 2019/01/29(火) 22:11

>ということは 〜 ということでしょうか
自分で実際に試してみればわかることのような気がしてならないですが、大体あってるとおもいますよ。

関係ないですが、おそらくエディタに入力したのではなく、コメント返信欄に手打ちしたためでしょうけど、インデントくを付けて見やすくしたほうがいいとおもいます。
そうすると 無駄な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


どうやら同じ名前の方がいたようでもこなさんの投稿の
『列の値を削除したいです。』(ひろ) について登録投稿した覚えがないです
とにかくありがとうございました
(ひろ) 2019/01/30(水) 13:25

 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.