親子におすすめの新型プラネタリウムとは?

 御力添え、お願いします。m(__)m

質問はエクセルにて、特定の文字が同じで、
含まれていれば"OK"としたいのですが、
自分なりに調べて、*(アスタリスク)が、
ワイルドカードで、使ってみたのですが↓
=IF(A1="*"&"B"&"*","OK","NO")
と書いても結果が、"NO"になるのです。

 A1には、「ABC」や「CCB」「BAKA」が入り、
全て"OK"としたいのです。

 ?マークも対象文字位置が同じならOKと思い、
試しましたが、これもダメでした。

 IF文に限定したわけでは、ないです。
他の方法でも、特定文字の有無から次を実行できる、
方法を御教授して頂きたいのです。
 本当は、マクロ(VBA)の中で、使って行きたいので、
セルの直接入力とVBE入力とで、違いが有るのなら、
両方教えて貰えれば、幸いです。

 文法などでは無く、単にexcelの設定ミスなのかも
知れませんが、自分なりに調べた結果
わかりませんでした。(ToT)

 答えの説明は、私がバカなのでお手数になると、
思いますので文法(方法)だけでも構いません。
出来れば、わかり易く解説して貰えると、嬉しいです。

よろしく、お願いします。m(__)m

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>sheetの名前が「*重要*」なら…、


>If Active.Sheet.name.value like "*重要*" Then
(私も元の質問と違ってきているような気がしますが・)
アクティブシートの名前は、
ActiveSheet.name で得られるので
アクティブシートの名前に重要が含まれるかどうかは
If ActiveSheet.name like "*重要*" Then
と書けます。
また別の方法で
If instr(ActiveSheet.name,"重要") Then
とか
If instr(ActiveSheet.name,"重要")<>0 Then
でも良いです。
>以前は、IF~ = "絶対重要"で、動いていました。
シート名が、"絶対重要" で一致するかどうか調べる場合には、
IF~ = "絶対重要"
として一致しているかどうかを調べることができますが、
この時に'*' のようなワイルドカードを用いることはできません。
そのような場合に'='の代わりに Like 演算子を使います。
    • good
    • 0
この回答へのお礼

 BLUEPIXY様、並びに imogasi様、
遅くなって、すみません。
御回答、ありがとうございました。m(__)m

 当初からの質問がズレてるとのご指摘、
申し訳ごさいませんでした。m(__)m
 適当に、サイトからのツギハギで作った
モノだったので、そのレベルで答えがあっても
理解できないと思い、歪曲してお聞きしてました。 お手数をお掛けして、すみませんでした。

又、質問させて頂く事になると思いますが、
ひとまずは、解決です。\(^o^)/
ありがとうございました。m(__)m

お礼日時:2006/04/13 21:30

#3です。

お礼の
>RengeやCellを使わないで、するにはどーすればよいでしょうか?
この質問はエクセルに関数ことのようですし、A1とあるからセルの文字列のことのように思いました。そうすると「RengeやCellを使わないで」という意味が良くわかりません。
文字列 Like (パターン)がTRUEかFALSEの値を持ちます。
文字列はセルの値でなくても、シート名でも良いです。
IFではワイルドカードは直接使えないでしょう。
COUNTIFなら使えます。
VBAならWorksheetFunction.COUNTIFなら使えると思います。
質問の意味がところどころ捉えられなくて、回答できない状態です。
ーーー
=IF(COUNTIF(A1,"*B*")>0,"OK","NO")
こういうことをきいているのかな。
    • good
    • 0

質問が出ているVBAについて


Sub test01()
For i = 1 To 10
x = Cells(i, "A").Value Like "*B*"
If x = True Then
Cells(i, "B") = "Y"
Else
Cells(i, "B") = "N"
End If
Next i
End Sub
A1:A10に下記文字列があるとする。
実行後は下記B列。
ASDBCVY
FGHDN
BBRTEY
GHSRN
BNDFXY
HJNMBBY
BY
bbN
B BY
XBBY
LIKEは、VB(A)のLIKE演算子といわれるものです。
文字パターンに? * # [文字リスト] [!文字リスト]
などが使えます。
指定した文字列が、文字パターンの条件と一致しているか調べることができる。
Accessの例ですが
http://www.geocities.jp/cbc_vbnet/kisuhen/enzans …
のLIKE演算子を参照。
SQLなどでも同じようなものが使える。
    • good
    • 0
この回答へのお礼

 imogasi様、御回答ありがとうございます。m(__)m

 LIKE演算子とは、まったく知りませんでした。

 ところで、本当に申し訳ないのですが、
先にも補足させて頂いた様に、RengeやCellを
使わないで、するにはどーすればよいでしょうか?
 ○○が◇▲×なら→If~~like "*▲*" Then
で、良いのでしょうか?下記では、シート名に
しておりましたが、これがテキストが起動中ならに
変更した時も、同様の文法構成で良いのでしょうか?

 できれば、=(イコール)"*▲*" Then の
形であれば分りやすくて、嬉しいのですが。(~_~;)

 恐れ入りますが、もう暫く
御教授お願いします。m(__)m

お礼日時:2006/04/12 22:06

>VBA版がresult=…と有るのですが、私には理解不能です。


結果を何かに代入するのだと思って、そのように書きました。
別にサンプル以上の意味は無いです。
特に"OK","NO" の値が必要ないなら普通にif で
If Range("A1").value like "*B*" Then
'B が含まれていた時の処理
Else
'B が含まれていない時の処理
End If
とすればいいと思います。
    • good
    • 0
この回答へのお礼

 再び早々と、ありがとうございます。m(__)m

 そーですね、"代入"ですね。
数式で、考えてました。(~_~;)オハズカシイ。

 ところで、申し訳ないのですが、
Range("A1")を使わずに、IF~~Thenの形で、
sheetの名前が「*重要*」なら…、
If Active.Sheet.name.value like "*重要*" Then
なのでしょうか?←やってみたがダメでした。(;o;)

すみません、どーすれば良いでしょうか…(ToT)

以前は、IF~ = "絶対重要"で、動いていました。
=(イコール)を用いたのが私には分り易いのですが、
ダメなのでしょうか? 

 度々で、本当に申し訳がないです。

 宜しくお願いいたします。m(__)m

お礼日時:2006/04/12 21:23

セルでの入力だと


=IF(COUNTIF(A1, "*B*"),"OK","NO")
でいいと思います
VBAだと
result=IIF(Range("A1").value like "*B*","OK","NO")
でいいと思います。
    • good
    • 0
この回答へのお礼

 BLUEPIXY様、早々の返信、
ありがとうございました。m(__)m
 
 1週間悩んで、ここでも質問が低レベル過ぎて、
なかなか返信が無いものと思っていたので、
本当に、”感謝”です。m(__)m

 あつかましいのですが、VBA版がresult=…と
有るのですが、私には理解不能です。すみません。

 できれば、IF~~として貰えないでしょうか?
 とある工程を実行後の動作で、実際にはセルは
使わないのです。(~_~;)(変更が僕には…、)

 御時間が有る時で結構です。
 宜しくお願い致します。m(__)m

お礼日時:2006/04/12 19:45

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcelVBAでBookを開く時にファイル名の一部だけを指定で

VBA初心者です。
ExcelVBAで決まったフォルダーのファイルを開きたいのですが、ファイル名が固定した文字+日付になっているため、この固定した文字だけでこのファイルを開く方法を教えて下さい。このフォルダーには2つファイルがありますが、もう1つは全く違うファイル名です。

Aベストアンサー

> ワイルドカード"*"はどんな時に使えるのですか

Dir関数を使用時の"*" (アスタリスク) および "?" (疑問符) のワイルドカード文字については、
VBAのヘルプを参照し、特に「使用例」のコードを理解してください。

その他 VBAでの ワイルドカード使用に関しては、ヘルプで Like で検索して、
Like 演算子 を参照し、同じく「使用例」のコードを理解されたら宜しいかと思います。


> 通常のOPENメソッドでの> ファイル名指定では使えないと思うのですが。

Workbooks.Openメソッドの1番目の引数は、ファイルが特定出来るように指定する必要が
ありますので、当然 ワイルドカード文字は、使用出来ません。

殆ど、フルバスで指定します。 もし、パス名を省略すると カレントホルダ内のファイルを
指定したことになります。([メニュー]-->[オプション]-->[全般]タブの中で指定)

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QEXCELマクロでワイルドカードを使ったオートフィルタ処理の方法がわからない

エクセルのマクロがうまく動かないので、教えてください。
あるセルにカーソルをおいて、そのセルの文字を含んだ文字で(ワイルドカードを使って)オートフィルタ処理をしたいのですが、
「構文エラー」となってしまいます。

Dim num As String

num = ActiveCell.Value

Sheets("リスト").Select
Columns("AN:AN").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*"&num&"*", Operator:=xlAnd
ActiveWindow.ScrollColumn = 2
Range("A1").Select

Criteria1:="=*"&num&"*"の部分で
「構文エラー」になっているようなのですが…
お分かりになる方教えてください。よろしくお願いします。

Aベストアンサー

こんにちは。

特に、そこ自体に問題ないというか、
VBAの特徴なのですが、「&」の前後に半角スペースが必要です。

"=*"&num&"*"
  ↓
"=*" & num & "*"

細かいことですが、この「*」アステリク を入れるというのは、対象も文字列ですから、数字が入れば、被検索対象列は、文字列でないといけないはずです。

Columns("AN:AN").Select

また、通常、このような選択をするというのは、飛び石になっている途中の空白も含むという意味になります。ただし、データ列の最後尾から下のセルは含まれません。

Range("AN1").CurrentRegion となります。特に、CurrentRegion がなくても動作的には同じです。

-------------------------------------------------

Dim num As String

num = ActiveCell.Value

Sheets("リスト").Select
'Columns("AN:AN").Select ←不要
Range("AN1").CurrentRegion.AutoFilter Field:=1, Criteria1:="=*" & num & "*", Operator:=xlAnd
'ActiveWindow.ScrollColumn = 2  ←不要
'Range("A1").Select  ←不要

-------------------------------------------------

こんにちは。

特に、そこ自体に問題ないというか、
VBAの特徴なのですが、「&」の前後に半角スペースが必要です。

"=*"&num&"*"
  ↓
"=*" & num & "*"

細かいことですが、この「*」アステリク を入れるというのは、対象も文字列ですから、数字が入れば、被検索対象列は、文字列でないといけないはずです。

Columns("AN:AN").Select

また、通常、このような選択をするというのは、飛び石になっている途中の空白も含むという意味になります。ただし、データ列の最後尾から下のセルは含まれませ...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QエクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?

ワークシート関数で書けば
=IF(OR(F18=0,AND(F15>0,F16>0)),TRUE)です。
これをVBAで書こうとして

If Sheet1.Range("F18") = 0 Or Sheet1.Range("F15") > 0 And Sheet1.Range("F16") > 0 Then
MsgBox True
Else
MsgBox False
End If

とやってみたのですが、正しくないようです。
どのように書けばいいのでしょうか?

Aベストアンサー

>とやってみたのですが、正しくないようです。

式は正しいと思いますよ

ANDとORは、ANDが先に演算されます。/*と+-では、/*が先に演算されるようなものです。

でも、わかり易くするために、#1のかたのように括弧をつけるほうが良いですね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング