Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21267 / 76738 ←次へ | 前へ→

【60873】Re:検索値をセル内最初の2文字に指定して、検索結果を出す場合は?
発言  Jaka  - 09/3/19(木) 12:49 -

引用なし
パスワード
   ▼うしねこ さん:
>検索値"c": セル"d"を参照して同ファイル内の別シートリストから、検索結果を表示
>検索値"b": セル"e"の最初の2文字を参照して同じく検索結果を表示
>
>何度もお手数をお掛けしますが、宜しくお願いします。
これだけ言われてもよく解りません。
シートレイアウトやデータがどうなっているのかもわからないので...。

1つだけ、注意点。
これもデータ等がどうなっているのか解らないので、よくやりそうな物を。

例えばデータがこんな風になっているとして、
A列は、数値です。

A   B
11   あ
12   い
13   う
14   え
15   お
16   か
17   き
18   く
19   け
20   こ

検査値データ、「15AB」の左から2文字を取り出して検索する場合の注意点。
これ↓で検索できるだろうと思ったら大間違い。
検索するデータが数値なのに文字の「11」を検査値としてしているのでエラーになります。

=VLOOKUP(LEFT("15AB",2),A1:B10,2,0)

数値の場合もLeft、Right、Mid等で抜き出した場合、数値でなく文字になります。
エクセルは、文字と数値を厳格に区別します。
また、エクセルが自動で数値に変換して処理する場合があるので、この辺りが思い違いをされる原因かもしれません。

エラーにならず抜き出すには、文字の数字を数値に変換してやればいいです。
例えばこんな風に。

=VLOOKUP(--LEFT("15AB",2),A1:B10,2,0)

↑をVBA上で計算させたい場合は、

Dim st As String, ans As Variant
st = "15AB"
ans = Application.VLookup(CLng(Left(st, 2)), Range("A1:B10"), 2, 0)
If IsError(ans) Then
  MsgBox "見つからない"
Else
  MsgBox ans
End If

でまた、上の注意点。
CLng("あいう")
数値に変換できない文字を数値に変換するとエラーになるので、この辺りのチェックも必要になってきます。
1 hits

【60857】検索値をセル内最初の2文字に指定して、検索結果を出す場合は? うしねこ 09/3/18(水) 14:12 質問
【60859】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/18(水) 15:42 発言
【60860】Re:検索値をセル内最初の2文字に指定して... うしねこ 09/3/18(水) 16:03 発言
【60861】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/18(水) 16:16 発言
【60862】Re:検索値をセル内最初の2文字に指定して... うしねこ 09/3/18(水) 16:48 発言
【60863】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/18(水) 17:09 発言
【60864】Re:検索値をセル内最初の2文字に指定して... うしねこ 09/3/18(水) 18:01 発言
【60873】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/19(木) 12:49 発言
【60877】Re:検索値をセル内最初の2文字に指定して... うしねこ 09/3/19(木) 15:18 質問
【60878】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/19(木) 16:48 発言
【60879】Re:検索値をセル内最初の2文字に指定して... Jaka 09/3/19(木) 17:00 発言
【60880】Re:検索値をセル内最初の2文字に指定して... うしねこ 09/3/19(木) 17:25 お礼

21267 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free