OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルの関数を教えてください

  • すぐに回答を!
  • 質問No.165184
  • 閲覧数58
  • ありがとう数0
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 48% (48/98)

エクセルのVBで、ある値で列を検索し、その値が何行目かを取得したいのですが、できますか? 
  A列    
1 りんご   
2 みかん  
3 バナナ  
4 かき    
5 栗      
"みかん"= 2行目 "バナナ" = 3行目  "栗" = 5行目
基本的なことですよね、すいませんがお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル13

ベストアンサー率 68% (791/1163)

私も作ってみました。
検索範囲はシート全体にしてあります。検索文字はInputBoxを使って入力します。
Findを使って、検索文字があるだけMsgBoxで出力します。
ご参考に。

Sub searchCharacter()
  Dim schArea As Range   '検索する範囲
  Dim myTarget As String  '検索文字
  Dim fndCell As Range   '見つけたセル
  Dim firstAdr As String  '最初に見つけたセル
  Dim schCot As Integer   '見つけた個数

  '検索文字の入力
  myTarget = Application.InputBox("検索する文字列を入力します", "検索", Type:=2)
    If myTarget = "False" Then Exit Sub

  '1回目の検索実行
  Set schArea = ActiveSheet.UsedRange '検索する範囲(この場合はシート全部)
  Set fndCell = schArea.Find(what:=myTarget) '検索
    If fndCell Is Nothing Then
      MsgBox "検索文字:" & myTarget & " は見つかりませんでした。"
      Exit Sub
    End If

  firstAdr = fndCell.Address '1回目の検索結果のアドレス

    '2回目以降の検索実行
    Do
      If MsgBox("検索文字:" & myTarget & " は" _
        & fndCell.Row & "行目" & fndCell.Column & "列目" & "にあります。", _
          vbOKCancel, "結果") = vbCancel Then
        Exit Sub
      End If
      schCot = schCot + 1
      Set fndCell = schArea.FindNext(after:=fndCell)  '次を検索
    Loop While fndCell.Address <> firstAdr And Not fndCell Is Nothing

  MsgBox "検索文字:" & myTarget & " は " & schCot & "個見つかりました。"
End Sub
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル1

ベストアンサー率 0% (0/1)

=MATCH("みかん",A1:A5,0) -> 2 =MATCH("バナナ",A1:A5,0) -> 3 というふうに結果が出るかと.... "みかん"とか"バナナ"をセル名にしてもいいでしょう... お試しください。
=MATCH("みかん",A1:A5,0) -> 2
=MATCH("バナナ",A1:A5,0) -> 3
というふうに結果が出るかと....
"みかん"とか"バナナ"をセル名にしてもいいでしょう...
お試しください。

  • 回答No.2
レベル5

ベストアンサー率 33% (2/6)

ExcelのVBAからMATCHを使用する場合は Dim rngWk as Range rngWk = Range("F1") '<=MATCHを使用するためのセル rngWk.FormulaR1C1 = "=MATCH(""バナナ"",R1:R5,0)" Msgbox rngWk.value, ...続きを読む
ExcelのVBAからMATCHを使用する場合は

Dim rngWk as Range

rngWk = Range("F1") '<=MATCHを使用するためのセル
rngWk.FormulaR1C1 = "=MATCH(""バナナ"",R1:R5,0)"
Msgbox rngWk.value,,"検索結果"
といった感じで書きますね

セルを使いたくない場合は
dim Answer as Variant
Answer = Application.WorksheetFunction _
.Match("バナナ", Worksheets(1).Range("A1:A5"), 0)
Msgbox Answer,,"検索結果"
でAnswerに結果が返ります
*VBAのシート上でMATCHなどのワークシート関数を書いて[F1]を押すとhelpにコードの書き方が出ますよ

なおMATCHで戻ってくる数字は「行番号」ではなく、「"A1:A5"で指定された中の何番目であるか」なので
データを"A5:A10"に入れている場合には戻ってきた数字に[+4]などしてあげましょう♪
  • 回答No.3
レベル5

ベストアンサー率 33% (2/6)

おとと; 先ほどの当方の回答、一部不足; > rngWk = Range("F1") '<=MATCHを使用するためのセル ↑ Set rngWk = Range("F1") ~~~ ですね この方法を使うならMsgboxなどで検索結果を表示した後に rngWk.Value = "" で消してしま ...続きを読む
おとと;
先ほどの当方の回答、一部不足;

> rngWk = Range("F1") '<=MATCHを使用するためのセル

Set rngWk = Range("F1")
~~~
ですね

この方法を使うならMsgboxなどで検索結果を表示した後に
rngWk.Value = ""
で消してしまった方がカッコイイでしょう(^^)
  • 回答No.4
レベル12

ベストアンサー率 51% (254/492)

こんにちは  ワークシート関数でしたら、 =MATCH("バナナ",A:A,0)  マクロでしたら、 Sub test() Dim Answer As Variant On Error GoTo errHandler Answer = Application.WorksheetFunction.Match("バナナ" ...続きを読む
こんにちは

 ワークシート関数でしたら、

=MATCH("バナナ",A:A,0)

 マクロでしたら、

Sub test()
Dim Answer As Variant

On Error GoTo errHandler
Answer = Application.WorksheetFunction.Match("バナナ", Columns(1), 0)
MsgBox Answer, , "検索結果"
Exit Sub
errHandler:
MsgBox "検索値が見つかりません"
End Sub

でいかがでしょうか?
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ