No.1ベストアンサー
- 回答日時:
こんばんは!
数式を拝見すると
C列の中からC61:C67の範囲内の「WH」を含むセルの値を返す!
というような数式に思えるのですが、
INDEXの配列範囲とMATCH関数の範囲がなぜ重複しているのかイマイチ理解ができません。
(お示しの数式では「WH」という文字列を含むセルがC1~C67セル内にあると必ずそのセル値が返りますよね。)
まぁ~!その辺はさておいて・・・
質問文にある「エクセル関数をVBAに」という方法ではありませんが
一例です。
Sub Sample1()
Dim c As Range, myRng As Range
Set myRng = Range("C1:C67")
Set c = myRng.Find(what:="WH", LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
MsgBox c
End If
End Sub
※ 上記コードでもお示しの数式と同じ結果になると思います。
※ お望みの方法でなければ無視してください。m(_ _)m
No.4
- 回答日時:
No.1です。
>C1:C67の中にWHが含まれるセルが1〜2個あるので・・・
MATCH関数を使っているというコトは
複数存在しても最初の行がヒットしますので、67行内に複数あっても最初のデータだけをD列に表示すれば良い!
という解釈です。
Sub Sample2()
Dim i As Long, cnt As Long
Dim c As Range, myRng As Range
For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row Step 67
Set myRng = Cells(i, "C").Resize(67)
cnt = cnt + 1
Set c = myRng.Find(what:="WH", LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
Cells(cnt, "D") = c
End If
Next i
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
ただの参考です。
WHの入っている文字列を、C列から探して、D1から下に並べるだけの処理です。
WHでなくても良いように、A3に入っている文字列を、C列から探します。
67件を探し出す総件数とする場合、A4に67と入れます。 A4=5 ならば、5件しか探しません。
最大600回ループの意味が分かりませんが、C列のデータ数には制限なしです。
Sub 参考()
' 、A3のセルの文字列を含む文字列を、C列で上から検索して、
' 見つかった文字列を、D1から下に並べる
' ついでに、見つかった文字列のあった行番号を、E列にメモる
' ただし見つかった文字列が累計でA4セルの件数になった場合は、
' その件数までで動作を終了する
tais = Range("A3")
owar = Range("A4"): If Not IsNumeric(owar) Then owar = 67
kens = 0
Set atta = Range("C:C").Find(what:=Range("A3").Value, _
LookAt:=xlPart, MatchCase:=True, MatchByte:=True)
If atta Is Nothing Then Exit Sub
sento = atta.Row
Do
kens = kens + 1: Cells(kens, 4) = atta: Cells(kens, 5) = atta.Row
Set atta = Range("C:C").FindNext(after:=atta)
Loop Until (sento = atta.Row) Or (kens = owar)
End Sub
No.2
- 回答日時:
ご質問の目的を想像して回答します。
的違いなら、すみません。INDEXの対象範囲がC列のみである事、引数をMATCHで抽出する。
ループで複数ある値を抽出するなどを踏まえると
VBAの場合、アプリケーション関数をしないで、べたに行う方が良いのではないでしょうか。
アプリケーション関数は、処理が早く良いのですが、どうせループするなら、
ループ内で条件による抽出が良いと思います。
回答を判断するのはあなたですが、、
Sub test()
Dim R As Range
Dim Ans
For Each R In Sheets(1).Range("C:C") ’シートインデックス1番のシートのC列対象
If R.Value Like "*WH*" Then
Ans = R.Value ’値を抽出 配列に入れるなり、表に書き出すなり、、、してください。
Debug.Print Ans ’結果をイミディエイトウィンドウに表示 使用時コメントアウト
End If
If R.Value = "" Then Exit For ’空白になったら終了
Next R
End Sub
べたに総当たりなので、作画の抑止などの手法を講じてください。
結果をイミディエイトに出力していますので結果を確認されてください。
複数列も回すなら、
For Each R In Sheets(1).Range(Cells(1, 変数), Cells(最終行, 変数))
変数は列№ 通常カウント変数、最終行は変数か、確実に空欄になる行№
みたいな感じで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) ExcelVBAの、Index matchについて 2 2023/04/18 16:57
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Excel(エクセル) エクセルで納品書を作成中ですが、関数を教えて下さい。 2 2022/09/05 10:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
Excelのオートフィル
-
エクセルで、2種類のデータを...
-
エクセルのまとめてカッコをつ...
-
Excelで中央揃えが出来ない?
-
Excel 指定行までコピーをおこ...
-
ある列のセルに特定の文字が入...
-
Excel 頭に「0」がついている...
-
エクセルに入力した文字列に句...
-
Excelでグループの最大値から項...
-
エクセルで特定の文字が入って...
-
連続データを1行おきに貼り付け...
-
Excel強制終了
-
エクセル、11と1の区別
-
INDIRECTの列を可変にしたい
-
エクセルで、数字列の中にハイ...
-
セル内文章から、英数字のみ取...
-
空白への0入力 二次元配列(VBA)
-
excelで、1つのセルに入ってい...
-
excel: 2行ずつ間隔を空けて関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
ある列のセルに特定の文字が入...
-
Excelで中央揃えが出来ない?
-
エクセルで特定の文字が入って...
-
セル内文章から、英数字のみ取...
-
Excel 頭に「0」がついている...
-
エクセルのまとめてカッコをつ...
-
桁の違う数値での並び替え
-
エクセルに入力した文字列に句...
-
Excel強制終了
-
Excel 指定行までコピーをおこ...
-
Excelの結合でA列とB列の内容...
-
excelで、1つのセルに入ってい...
-
エクセルで、数字列の中にハイ...
-
連続データを1行おきに貼り付け...
-
エクセルの関数
-
【エクセル】2行に一行のように...
-
WEEKDAY 空白も7になってしまう
-
VLOOKUPのあいまい検索(スペー...
おすすめ情報
tom04様
さっそくありがとうございます!
説明足らずで申し訳ありません(^o^;)
C1:C67の中にWHが含まれるセルが1〜2個あるので、
例えばD1にINDEX(MUCH)
D2にINDEX(MUCH+1)みたいにして
セルの値を返そうと思っています。
その範囲が67行づつの変数で、最大600回ループ処理する感じ(範囲内が空白になったら終了)です。
補足も駄文ですみません。
質問はあくまで表題の件ですがつい頼ってしまう…。