• ベストアンサー

Excelで特定の文字列があるかないかの検査

Excel VBAで文字列を調べて、そのセルに文字列が存在すれば切り抜いて変数に保存するという作業を行いたいと 思っています。例えば、本という列があるとします。本の列には、 $$book=本 $$books=本部類 という値が入っていたりします。"="以降を切り抜いて、bookは列1、booksは列2に挿入したいと思います。 この場合、"本"という値は列1へ、"本分類"という値は列2へ入ることになります。 この文字列の調べ方がわかりません。Instr関数を使うことを考えたのですが、どちらの値もヒットしてしまいます。 どのような関数を使ったら上手に文字列を切り抜くことが可能でしょうか?

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

良く判らないけど、こういう事かな? Sub Sample()  Dim sParts() As String  Dim i As Long  For i = 1 To 2   sParts = Split(Cells(i, 1).Value, "=")   Select Case sParts(0)   Case "book"    Cells(i, 2) = sParts(1)   Case "books"    Cells(i, 3) = sParts(1)   End Select  Next i End Sub

その他の回答 (4)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

こんにちは 何をお訊きになりたいのか、わからないのですが、 > Excelで特定の文字列があるかないかの検査 / > Excel VBAで文字列を調べて、そのセルに文字列が存在すれば切り抜いて変数に保存するという作業を行いたいと > 思っています。 / > "="以降を切り抜いて、bookは列1、booksは列2 / > Instr この部分にだけ反応します。 # 此処の掲示板でコードの提示のない質問にコードで応えるのは、 # 抵抗があるのですが、、、 Dim 文字列$, 列1$, 列2$ 'ということなのだとして、、、  If InStr(文字列, "book=") > 0 Then   列1 = Mid(文字列, InStr(文字列, "=") + 1)  ElseIf InStr(文字列, "books=") > 0 Then   列2 = Mid(文字列, InStr(文字列, "=") + 1)  End If ' 「文字列」に"book="が見つかったならば ' 「文字列」で"="が見つかる位置の次の桁以降の「文字列」を抜き出す。 ' 以下同様。 というようなことでしょうか?

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

 本当にお書きの通りなのでしたら、 >例えば、本という列 を選択して、 With Selection  .Replace "$$books", "$$books="  .TextToColumns Other:=True, OtherChar:="="  .Delete Shift:=xlToLeft End With のようなことで実現可能かと。。。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

という値が入っていたりします。"="以降を切り抜いて、bookは列1、booksは列2に挿入したいと思います。 この場合、"本"という値は列1へ、"本分類"という値は列2へ入ることになります。 →”列1””列2”が2回ずつ出てきています。どうしたいのか、理解できません。 Instr関数を使うことを考えたのですが、どちらの値もヒットしてしまいます。 →「どちら」とは何と何を検索したのでしょうか?  「本部類」と「本」を検索して、どちらでもヒットしたのであれば、 まず「本部類」で検索し、ヒットしない場合のみ「本」で検索すれば よいはずです。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

いまいちよくわかりませんが、 Like演算子 は使えませんか? Split関数 も便利だと思います。 まず「本部類」でしらべて、該当しなかったら、次に「本」で しらべるとか。

関連するQ&A