• ベストアンサー

Excelで曜日・数字が含まれた文字列を曜日別に分割したいです

Excel関数で悩んでいます。 ひとつのセルに曜日と数字が入っていた場合に 数字別に曜日を分割する方法はあるでしょうか。 例)              月  火  水  木  金  土  日 月:500、水:800     500     800 月火:700、木:500    700  700 500 月:500、火水木金:700  500  700 700 700 700 上記のようにです。 条件のセルはひとつです。月~日は別セルです。(内容は数字になる) MINとかLENと使って数字を抜くことはできても複数の条件に対しての 数字がどうしても読み取れません。 よろしくお願いいたします。   

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

ちょっと長くなりますが、数字桁可変対応です。 =IF(ISERROR(FIND(B$1,$A2,1)),"",REPLACE(MID($A2,FIND(":",$A2,FIND(B$1,$A2,1))+1,LEN($A2)),FIND("、",MID($A2&"、",FIND(":",$A2,FIND(B$1,$A2,1))+1,LEN($A2)),1),LEN($A2),"")*1)

sunu0911
質問者

お礼

確かに長いですが、わかりやすいです。 こんなに色々な方法があるとは思いませんでした。 悩んだ半日がなんだったのか? ありがとうございました!

その他の回答 (3)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

B2=IF(ISNUMBER(FIND(B$1,$A2)),REPLACE(LEFT($A2,FIND("、",$A2&"、",FIND(B$1,$A2))-1),1,FIND(":",$A2,FIND(B$1,$A2)),),"") ★右と下にコピー ★数値の桁はいくつでもいいですよ

sunu0911
質問者

お礼

みなさんすごいですね。 読み解いて使ってみます。ありがとうございます!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

1行目を曜日、A2以下に条件で数値は3桁固定として、B2に次の数式を設定、縦横にコピーで如何でしょうか。 =IF(ISERROR(FIND(B$1,$A2)),"",MID($A2,FIND(":",$A2,FIND(B$1,$A2)+1)+1,3))

sunu0911
質問者

お礼

ありがとうございます。 実は桁数が固定ではないのですが、桁のところを工夫して やってみます。

noname#140971
noname#140971
回答No.1

月:500、水:800________500_______800 月火:700、木:500______700__700_______500 月:500、火水木金:700__500__700__700__700__700 =CutStr(((CutStr(CutStr(A1,"月",2),":", 2))), "、",1) このように CutStr関数ってのを一つ標準モジュールに登録すれば・・・。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function 僅か2行の関数ですが、これで可能になります。 =CutStr(((CutStr(CutStr(A1,"月",2),":", 2))), "、",1) =CutStr(((CutStr(CutStr(A1,"火",2),":", 2))), "、",1) =CutStr(((CutStr(CutStr(A1,"水",2),":", 2))), "、",1) =CutStr(((CutStr(CutStr(A1,"木",2),":", 2))), "、",1) 1、"月"で区切られた文字列の2番目を抜き出す。 2、その文字列から":"で区切られた2番目を抜き出す。 3、さらに、"、"で区切られた1番目を抜き出す。 [イミディエイト] ? CutStr("月:500、水:800", "月", 2) :500、水:800 ? CutSTr(":500、水:800", ":", 2) 500、水 ? CutStr("500、水", "、", 1) 500 これを、一文で書けば・・・。 =CutStr(((CutStr(CutStr(A1,"月",2),":", 2))), "、",1) ※エクセルの関数でも同じことは可能かと推察します。 ※が、いかんせん、エクセルは操作したこともない門外漢。 ※で、アイデアだけでも参考になさってください。

sunu0911
質問者

お礼

回答いただきありがとうございます。 関数で無理であればVBAでやってみようと思っていました。 参考にさせていただきます!

関連するQ&A

  • 曜日別

    エクセルで例えば 月 25 火 30 水 19 木 18 金 25 土 35 日 19 月 31 火 30 水 15 木 18 金 91 土 35 日 19 という表があります この表から 曜日別に 月 合計 火 合計 水 合計 という風にするにはどうすればいいのでしょうか? 祝祭日も加えたいです あと、曜日別に並べ替えたいです 月 25   31 火 30   30 という風に 教えてください   

  • EXCELで曜日別に○の確立を求めたい場合

    下記のような表の時、曜日別に確立を出すのはどうすればいいのでしょうか 1日 | 月 | ○ 2日 | 火 | × 3日 | 水 | × 4日 | 木 | × 5日 | 金 | ○ 6日 | 土 | × 7日 | 日 | ○ ~~~~~~~~~~ 31日 | 月 | ○ こうなっていた場合に、曜日別に○が出る確立を求めたいのですがまるで分かりません。 よろしければご教示頂けませんでしょうか。 ちなみに使用しているEXCELは2002です。

  • 文字列の検索と置換について

    質問ですが、 AJ4:AO4のセルにA4セルを参照し曜日(文字列)を抽出し○に置き換えたいのですが どうしてもうまくいきません 何か他に良い関数などございましたらご教授ください --------------------- AJ4=CHOOSE(((C4="月")+(C4="火")+(C4="水")+(C4="木")+(C4="金")+(C4="土")),"○","○","○","○","○","○") --------------------- --------------------- AJ4=SUBSTITUTE("月火水木金土","月",AJ1) AJ1=○ --------------------- A4=月 A5=月水金 A6=火 ・ ・ ・    (月火水木金土)   結果 AJ4=月ならば○  ----"○"          AK4=火ならば○  ----"" AL4=水ならば○  ----"" AM4=木ならば○  ----"" AN4=金ならば○  ----"" AO4=土ならば○  ----"" (月火水木金土)   結果 AJ5=月ならば○  ----"○"          AK5=火ならば○  ----"" AL5=水ならば○  ----"○" AM5=木ならば○  ----"" AN5=金ならば○  ----"○" AO5=土ならば○  ----"" 説明もうまく表現できませんがよろしくお願いします

  • エクセルで曜日指定のセル連続データを作りたい

    ウィンドウズ版のエクセル97を使ってます。 曜日指定の日付の入ったセルを作りたいのですが、セルの連続データのフィルハンドルでうまく行きません。簡単に出来る方法を教えて下さい。 具体例   2月 2日(土)       2月 5日(火)       2月 7日(木)       2月 9日(土)       2月12日(火)       2月15日(木)       2月17日(土)         ・         ・         ・

  • 曜日別に出勤を管理したい

    1ヶ月事の出勤表を作成したいのですが、 月水金or火木土 などの曜日で出勤する人がいます。 その曜日に出勤していれば 勤務した時間 例)6 などを表示したいです。          月 火 水 木 金 土 名前A 月水金 6    6    6  月曜日出勤なので 6 という条件をしたいです。 上記でわかっていただけるかがわかりませんが・・・宜しくお願いします。

  • エクセルで曜日によって処理をかえたい

    度々、お世話になります。 先日こちらで質問させていただいたところ、非常に参考になるアドバイスをいただきました。ありがとうございました。 今回、そのときのアドバイスをもとに横展開しようと考えています。 その内容は、曜日によって処理の開始日をかえるにはどうすればよいかということです。 例えば、製造日から3営業日後に発送可能となる場合、 =WORKDAY(A1+3-1,1,E1:E10)  ※祝日リストをE1:E10で別途作成 により    A    B   C    D 1  製造日  曜日 検査終了日 曜日 2 2009/09/07 (月) 2009/09/10 (木)  3 2009/09/08 (火) 2009/09/11 (金)  4 2009/09/09 (水) 2009/09/14 (月)  5 2009/09/10 (木) 2009/09/14 (月)  6 2009/09/11 (金) 2009/09/14 (月) 7 2009/09/12 (土) 2009/09/15 (火) となりますが、この時、2009/09/11製造(A6セル)と2009/09/12製造(A7セル)は、翌週の2009/09/14(月)を起算として3日後の2009/09/17(木)に発送可能となるよううな設定をしたく考えております。 どのような関数を使えばできますでしょうか?(A列を手動入力し、C列を自動計算したいです。) ご教授いただきたく、お願いいたします。 よろしくお願いいたします。

  • エクセルで曜日表示をしたセルを参照した他のセルに文字を入れる事は出来ますか?

    縦に氏名、横に日付と曜日を入れました 毎週同じ曜日を参照して休日設定をしたいのですがどうすればよいでしょうか? 下記のような感じです 鈴木は毎週火曜日休み 佐藤は毎週木曜日休み 山田は毎週水曜日休み 月が替わると曜日が変わるようにしてあります   1 2 3 4 5 6 7 8 9 10 11   月 火 水 木 金 土 日 月 火 水 木 鈴木  休             休   佐藤      休             休        山田    休             休 よろしくお願いします

  • Excel 曜日の連続データ作成

    Excelでセルに月曜と入力しドラッグしてコピーして連続データ(月、火、水、木、金、土、日)を作りたいんですけど出来ませんでした。 どうやるんですか? 自分のなかで一番の理想をしては例として9月1日(月)これの連続データを作りたいんです。 これだと一番楽が出来るはずなんですがでも実際できるのかもわかりません。 その他にも何月何日と曜日を織り交ぜた楽な方法があったらぜひ教えてください。 曜日だけでも結構です。

  • エクセルVBAで、期間内にある指定した数字を自動入力

    下のように月日(A列)のみが書いてある表があります。 ここに定価を自動入力させたいと考えています。 ただ条件が複雑で・・・。 期間内にあるもので、曜日により値を振り分けする必要があります。 例えば、 ■月日(from) 3/1 ■月日(to) 3/3 ■値 土・日・・・500    月・・・・・450 このような条件で、下の[入力前]の表の「値」の列に [入力前] 月日  曜日   値 3/1    (土) 3/2    (日) 3/3    (月) 3/4    (火) 3/5    (水) 3/6    (木) 下のようにそれぞれ入力させたいのです。 [入力後] 月日  曜日    値 3/1    (土)    500 3/2   (日)    500 3/3    (月)    450 3/4    (火) 3/5   (水) 3/6    (木) どこかのスペースに ■月日(from) 3/1 ■月日(to) 3/3 ■値 土・日・・・500    月・・・・・450 このような条件入力をするところを設けて、マクロを実行すると入力するようにしたいのですが、こんな複雑な振り分け設定ってVBAでもできるでしょうか?

  • 曜日別の勤務時間の構成比の算出方法を教えて下さい。

    曜日別の勤務時間の構成比の算出方法を教えて下さい。 例えば・・・ 曜日 勤務時間 1ヶ月の回数 月 7.0 4 火 4.2 4 水 6.2 4 木 9.8 4 金 4.1 4 土 2.5 5 日 1.0 5 その月によって、4回の場合と5回の場合がありますよね。 それを踏まえて構成比の算出方法を教えて下さい。

専門家に質問してみよう