[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件に合致する場合指定列の値を書き換える』(おぎも)
エクセルマクロ VBAに関する質問です。 初心者です。よろしくお願いします。
以下のような表があります。
1行につきA列〜C列のいずれかに1から200までの数字が入っています。
D列には必ずa〜cのいずれかの文字が入ってい
ます。
A B C D 1 50 a 2 99 c 3 100 c 4 120 a
■やりたい事
マクロでA列〜C列を検索し、100未満の場合は何もしない、100以上だった場合は同じ行のD列の文字を「d」に書き換える。
上記の表の場合ですと3行目、4行目のD列が「d」に書き換えられます。
このような処理は関数でできるのかもしれないのですが、実際には上記のようなファイルが1000ファイルほどありまして、1つ1つファイルを開いて処理するのが困難です。
ファイルを開いて閉じるというマクロは手元にありますので、上記の処理を教えていただきたく存じます。
それではどうぞよろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
こんばんは! 方法は色々あると思います。 一例です。。。良かったらどうぞ。。。
Option Explicit Sub kk() Dim v As Variant Dim i As Long v = Range("D1", Range("D" & Rows.Count).End(xlUp)).Offset(, -3).Resize(, 4).Value For i = LBound(v, 1) To UBound(v, 1) If Application.Max(Application.Index(v, i, 0)) >= 100 Then v(i, UBound(v, 2)) = Replace(v(i, UBound(v, 2)), v(i, UBound(v, 2)), "d") End If Next Range("D1").Offset(, -3).Resize(UBound(v, 1), UBound(v, 2)).Value = v End Sub (SoulMan) 2020/05/09(土) 21:23
それで、追加でお教えいただきたい事がございます。
実際のデータなんですが、A列〜D列は連続しておらず、具体的に言いますとG列〜I列が100未満か以上かを検索する対象列で、書き換えたい列はP列になるのです。
作成いただいたものを基に色々と試行錯誤して自分で解決を試みたのですが、検索対象列と置換列の間が空いているのを解決する事ができませんでした。
お時間割いていただいて作成いただいたのに恐縮ですが、お教えいただけましたら幸いです。
(おぎも) 2020/05/09(土) 22:38
全然かまいませんよ。。。 好きでやってますから。。。ただ、、時々かなりの確率でおおぼけかまします(^^; こんなことばっかりやてますから。。。大丈夫です。。。 全然すごくないです。。普通です。
Option Explicit Sub kk() Dim v As Variant Dim vv As Variant Dim i As Long With Range("P1", Range("P" & Rows.Count).End(xlUp)) v = .Offset(, -9).Resize(, 3).Value vv = .Value End With For i = LBound(v, 1) To UBound(v, 1) If Application.Max(Application.Index(v, i, 0)) >= 100 Then vv(i, 1) = Replace(vv(i, 1), vv(i, 1), "d") End If Next Range("P1").Resize(UBound(vv, 1), UBound(vv, 2)).Value = vv Erase v, vv End Sub (SoulMan) 2020/05/09(土) 22:54
ありがとうございます。
最悪地獄のような作業を覚悟していたのですが救われました。
私のような不勉強な人間からすればとんでもなくすごいです!
本当に感謝いたします。どうもありがとうございました。
(おぎも) 2020/05/09(土) 23:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.