- ベストアンサー
Excelのmatch関数のバグ?それとも、私の勘違い?
Microsoft Excel 2002 SP3 での質問です。 match("木",{"土","日"}) が、2を返すんですが、これはExcelのバグでしょうか? それとも、私の勘違いでしょうか? 第1引数が、第2引数の配列の何番目にあるかを調べるのが、matchの機能だと思ったのですが・・ なぜか、#N/Aが返りません。 これは、土日の判定に使おうと思っています。Weekdayで検査してもいいのですが、動かない理由が分かりません。 数値などは、問題なく動いているように見えますし、木曜以外は動きます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
関連するQ&A
- VLOOKUPとMATCH関数
こんにちは、お世話になります。 =VLOOKUP($B3,$I:$N,MATCH(C$2,$I$2:$N$2)2,0),0) この数式に関して何ですが、 第一引数第二引数第三引数と続くわけですが、 VLOOKUPの中にMATCH関数が入ったりとだんだん細かくなってきてしまって、難しいのですが この関数の数式の処理を詳しく解りやすく教えて頂けないでしょうか? ご教示お願いします。
- ベストアンサー
- Excel(エクセル)
- MATCH関数で空セル検索
MATCHを使って空セルの検索は可能でしょうか? MATCH("",配列,0) とした場合、#N/A エラーが返されます。 目的はデータ中の空セルの位置を検知したいので、別の方法でもかまいません。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- Excel 関数を使って曜日を自動的に出したい
Excel関数を使って曜日を自動的に出るようにしたいです。 通常 10月1日 木 10月2日 金 10月3日 土 ・ ・ と表示したい場合、CHOOSE関数とWEEKDAY関数を使って 曜日を自動的に出すやり方はわかるのですが、 月と連動させて表示をさせたい (例) 10月 ← ★ここに「月」を入力すると ★その月に準じた日数が自動的に出てきて・・・ (10月なら31日まで、11月なら30日までというように) ↓ 1日 木 ←★さらに曜日も自動的に出る 2日 金 3日 土 という仕組みにしたいです。 どのように作ればよいでしょうか? わかりづらく申し訳ございませんが お知恵を貸してくださいm(_ _)m
- ベストアンサー
- オフィス系ソフト
- foreach のバグでしょうか。PHP 5.3.3 で悩んだところが
foreach のバグでしょうか。PHP 5.3.3 で悩んだところがあります。 あるレコードが正規表現にマッチした場合、そのレコードに対して何らかの処理をするスクリプトを書いていました。 しかし思ったように動かず原因を調べました。結果、配列の値が変わっていることに気づきました。 ◇テスト用レコードの内容 http://www.yahoo.co.jp/ http://www.bing.com/ http://www.goo.ne.jp/ http://www.google.co.jp http://d.hatena.ne.jp/ ◇先頭一致して欲しい文字列 http://www.google.co.jp/ http://www.bing.com/ http://www.youtube.com/ この場合、処理の対象は2件です。 私が書いたスクリプトでは3回マッチしてしまいます。 以下、テスト用に作ったスクリプトです。 <?php // URL のパターンを用意 (とりあえず以下の3パターン) $ar = array(); $ar['Google'] = array( 'URL' => 'http://www.google.co.jp/' ); $ar['Bing'] = array( 'URL' => 'http://www.bing.com/' ); $ar['YouTube'] = array( 'URL' => 'http://www.youtube.com/' ); // 先頭一致の正規表現にする foreach($ar as $key => &$value){ $value['regex'] = '/^' . preg_quote($value['URL'], '/') . '/'; } echo("URL の パターンを出力してみる/n"); print_r($ar); // テスト用 レコード $list = array(); $list[] = 'http://www.yahoo.co.jp/'; $list[] = 'http://www.bing.com/'; // match. $list[] = 'http://www.goo.ne.jp/'; $list[] = 'http://www.google.co.jp/'; // match. $list[] = 'http://d.hatena.ne.jp/'; // マッチするのは2回のみ...のはずが for($n = 0; $n < count($list); $n ++){ foreach($ar as $key => $value){ if(preg_match($value['regex'], $list[$n], $match)) echo("match.\n"); } } echo("もう一度 URL のパターンを出力してみる\n"); print_r($ar); echo("なぜか一番最後の配列の値が変わっている。\n"); ?>
- ベストアンサー
- PHP
- 正規表現について
PHP5.2.4を使用しています。 任意の数の引数がある文字列をpreg_matchを使ってマッチさせたいのですが、 例えば"ENUM(ab,cd)"は ab と cd の2つの引数があるとします。 次のようなパターン文字列まではアイデアとして浮かんだのですが、 引数の最後は , がないので当然ですがマッチしません・・・ どのようにパターン文字列を記述すれば良いのでしょうか? $str = "ENUM(ab,cd)"; if (preg_match("/ENUM\(([^\,]+\,)+\)/", $str, $match)) { print "{$match[0]}<br>\n"; }
- 締切済み
- PHP
- EXCEL関数について。
EXCEL関数について。 下記関数にて、値の取得を行うようにしましたが、 この関数使用時のエラー(#N/A)が 出ないようにする為の数式を教えていただけませでしょうか? 【現在の数式】 =INDEX('01'!$T$8:$W$14,MATCH($C$12,'01'!$S$8:$S$14,0),MATCH($G12,'01'!$T$7:$W$7,0)) この数式の内、最初のMATCH関数 MATCH($C$12,'01'!$S$8:$S$14,0) の中の S8~S14までのセルの間に参照値 C12 の値がない場合に、エラーが出ないように したいのですが、その数式を教えていただけないでしょうか?
- ベストアンサー
- オフィス系ソフト
- マッチした郵便番号のみを配列に格納したい
テキストファイルから郵便番号のみを 抽出したいと考えています。 欲しいのは該当した郵便番号のみの一覧なのですが 下記プログラムではマッチした行が 配列として格納されてしまいます。 $naiyou = file("textfile.txt"); for($i=0;$i<sizeof($naiyou);$i++){ if(preg_match("/\d{3}-\d{4}","$naiyou[$i]")){ $naiyou[$i]=$naiyou[$i]."\n"; array_push($result,$naiyou[$i]); } } マッチした数字のみを配列に格納するには どうすればいいのでしょういか?
- ベストアンサー
- PHP
- Excel INDEX関数ズレて抽出される
INDEX関数で行列番号取得にMATCH関数を使用したときにズレてしまう。 定例のミーティングの参加表を作成しようとしています。 シートの構成は添付画像の通りです。 Sheet1 定例のミーティングの参加表 巡回Aは月ごとに担当者が変わる。 Sheet2 巡回Aの月別の担当表 巡回Aの担当表を用意して、COUNTIF関数で参加表の氏名が巡回Aのリストに含まれていない場合(カウント0)は空欄にし、0以外の場合、INDEX関数で列番号のところにMATCH関数をネスト、MONTH(TODAY())+1とし、ex. 8月なら翌月の9月に該当する列番号を抽出して巡回Aの出席を月が変わると連動するようにしたいです。 =IF(COUNTIF($B$22:$B$29,$B3)=1,IF(INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))=0,"",INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))),"") 職場のExcel2016では列がズレてしまい、抽出ができないです。 Excel365では問題なく抽出ができました。 2016でズレるのは何故でしょうか。 詳しい方居ましたらご教授下さい。 よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- Excel INDEX関数の使い方
添付図はA列B列にデータが入っており E1:E5のようなリスト(部署一覧)を用意しておき C列に部署名をとりだそうというものです C2に =INDEX(部署一覧,MATCH(1,FIND(部署一覧,B2),0)) という数式を入力してCtrl+Shift+Enterで配列数式にすれば部署名を取り出せるとありました 1.その通りにやってなるほど部署名はとりだせたのですが MATCH関数の引数に”1”とあるのがその意味が分かりません どなたか解説をお願いできないでしょうか 2.また部署名の前に別の文字列 例えば”関東支社”のような文字列がある場合 部署名だけを取り出すことはできないものでしょうか よろしくお願いします
- ベストアンサー
- その他MS Office製品
- エクセルでカレンダーにより色をつけたい
エクセルを用いて毎日のチェック表のようなものを作りました。 日にちに合わせて曜日を表示させるようにしました。「=MID("月火水木金土日",WEEKDAY(E6,2),1)」 これにより自動で曜日が表示されますが、このときに合わせて土曜と日曜のところのセルを自動で色をつけたいのです。 1 2 3 4 5 6 7 8 9 木 金 土 日 月 火 水 木 金 項目1 項目2 項目3 上のような形になっており、この場合ですと3、4の土日部分を自動で色をつけたいのです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 1年前に期限切れとなったESETセキュリティソフトウェアを再度使用するためには、更新版か新規版の購入が必要です。
- 過去1年間は別のセキュリティソフトウェアを使用していましたが、ESETを再度利用したいと考えています。
- 「更新版」を購入し、過去1年間使用した別のセキュリティソフトウェアをアンインストールし、ESETを再インストールすることで利用することができます。
お礼
ありがとうございます。 Excelはあまり使わないんで、知りませんでした。 関数のマニュアルの読み方がいい加減でした。 ありがとうございます。