エクセル2002 VBA での質問です。
A列に100~9999の数値データが不規則に存在しており、
105 108 113 114 121 531 553 2160 ・・・・・
のような不規則な値と合致するときに B列の処理をしたい場合のコードはどのように記述しますか?
私は
for MyRow=1 to (最終行)
if (cells(MyRow,1) =105 or cells(MyRow,1) =108 or cells(MyRow,1) =113 ・・・) then
B列の処理
end if
next MyRow
のように If文 のなかで or を用いて全てを記述するかElseif でつなぐ方法しか思いつきません。
抽出対象の値は今後メンテナンスする必要はないのでコード内に記述しても構わないのですが or や ElseIf を多用するのもどうかと思っています。
※現実には50個ほどの条件での合致を検出したいです。
みなさんならどのように記述されるでしょうか?
No.4ベストアンサー
- 回答日時:
作成例:
sub Excelに出来ることはExcelにやらせる()
dim a as variant
dim i as long
a = array(105, 108, 113, 114, 121, 531, 553, 2160)
range("1:1").insert
range("A1").resize(1, ubound(a)+1) = a
with range("B2:B" & range("A65536").end(xlup).row)
.formula = "=IF(COUNTIF($1:$1,A2),""○"","""")"
.value = .value
end with
range("1:1").delete shift:=xlshiftup
end sub
作成例:
sub マクロの中でゴリゴリやらせる()
dim a as variant
dim i as long
dim j as long
a = array(105, 108, 113, 114, 121, 531, 553, 2160)
for i = 1 to range("A65536").end(xlup).row
for j = 0 to ubound(a)
if cells(i, 1) = a(j) then
cells(i, 2) = "○"
exit for
end if
next j
next i
end sub
ご回答ありがとうございます。
二つも例示していただき感激です。
特に Excelに出来ることはExcelにやらせる()での
ワークエリアとして行挿入&削除 や
.value = .value のような一見しただけでは何をしているのかわからないコードの意味を読めたときは感動してしまいました。
ゴリゴリやるのはループの入子で、まさにゴリゴリを感じてしまいます(^^)
No.5
- 回答日時:
>B列の処理をしたい場合
の処理とは何?プログラムのコードの中ではないのだから、処理とは、同行のB列値を取るのではないのか?
あいまい。
値を取るならエクセルの常識関数VLOOKUPが使えるのでは。VBAでも使えるよ。
Sub test02()
Dim x As Integer
x = InputBox("コード")
MsgBox x
With ActiveSheet
y = Application.WorksheetFunction.VLookup(x, .Range("A1:B3"), 2, False)
MsgBox y
End With
End Sub
ーーーーーーーーー
モジュールのルーチン名(文字列)を得て、そのルーチンを実行するのは出来るかな?無理?
ご回答ありがとうございます。
>B列の処理をしたい場合
の処理とはデータクリア(セルを空白セルにする)したいのですが、今後は演算処理が要求されそうでもあります。
今後もご教示をお願いします
No.3
- 回答日時:
こんばんは!
色々やり方はあると思いますが、
IF・・・ OR IF・・・ と続けても大変ですので、
一例です。
Sheet2のA列に合致(検索)データを入力しておきます。
その上で↓のコードのような感じではどうでしょうか?
Sub test()
Dim i As Long
Dim ws As Worksheet
Set ws = Worksheets(2)
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(ws.Columns(1), Cells(i, 1)) Then
Cells(i, 2) =「B列の処理」
End If
Next i
Application.ScreenUpdating = True
End Sub
参考になりますかね?m(_ _)m
ご回答ありがとうございます。
ワークシート関数の Countif で一致確認をするのは、案外すっきりしたコマンドですね。
WorksheetFunction. って冗長な気がしていたのですが実例を教えていただくと活用する気になってきます。
No.2
- 回答日時:
私なら合致の結果を返すFunctionを作成します。
そして照合する値を配列に格納してFor Next文で配列の数分
ループさせる方法をとります。可読性が良くなるのが好きなので。
以下のサンプルは、Excel2007で作成しています。
呼び出し元:
If ValExist(Cells(myRow,1) Then
一致した処理
Else
一致する値がない場合の処理
End If
Private Function ValExist(Atai As String) As Boolean
Dim MyValue() As String
Dim Cnt As Integer
MyValue = Split("105,110,120,125", ",")
For Cnt = 0 To UBound(MyValue)
If Atai = MyValue(Cnt) Then
ValExist = True
Exit For
End If
Next Cnt
End Function
ご回答ありがとうございます。
UBoundのコマンドは知らなかったので勉強になります。
Splitで配列にして、その要素数をUBoundで取得するのですね。
その配列に一致すればFunctionがTrueを返す。
応用できるようにがんばります(^^)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
首吊りどこ締めるの
-
射精をして1週間以内に尿検査を...
-
変な話しになります。尿検査で...
-
白血球が多いとどんな心配があ...
-
今朝、毎朝の習慣でオナニーし...
-
1日前の検尿
-
検便についてです。 便は取れた...
-
男です。昨日の午後3時くらいに...
-
勃起する時って痛いんですか? ...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
彼女のことが好きすぎて彼女の...
-
中出しをするとお腹が痛い・・・。
-
小数点以下を繰り上げたものを...
-
EXCELで式からグラフを描くには?
-
2つの数値のうち、数値が小さい...
-
値が入っているときだけ計算結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報