- ベストアンサー
EXCELでセルに文字の略称を表示する関数を作成したい
- EXCEL初心者が、シート1とシート2のセルに入力された文字の略称を表示する関数を作成したい
- シート1のA1~G1には赤・青・黄・緑・茶などの値が入力され、その一つをシート2の指定のセルに表示させたい
- 範囲内で条件に合致する値がない場合は、シート2のセルを空欄にし、複数該当する場合はエラーを出したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 私も数時間頭を悩ませていた一人です。 補足の後もっと考えてしまいましたが。 補足文中でもところどころ項目の始まりのセルや、データが列方向なのか行方向なのかが抜けていて解読に苦労しました。 こういう表でよろしいのでしょうか? (シート1,2とも左上のセルがA1になります。CSVで読みこんで正確な配置を確認してください。) シート1 =========== , ,英 ,英 ,数 ,数 ,国 ,国 ,理 ,理 ,社 ,社 , ,許斐,尾田,岸本,澤井,高橋,鈴木,島袋,冨樫,武井,小畑 月 ,1 ,1A英,3B英,2A数,__,3A国,__,__,1B理,__,2B社 月 ,2 ,__,2B英,1A数,3B数,2A国,__,3A理,__,__,1B社 月 ,3 ,__,1B英,__,2B数,1A国,3B国,2A理,__,3A社,__ 月 ,4 ,3A英,__,__,1B数,__,2B国,1A理,3B理,2A社, 火 ,1 ,3A英,__,__,1B数,__,2B国,1A理,3B理,2A社, 火 ,2 ,__,1B英,__,2B数,1A国,3B国,2A理,__,3A社,__ 火 ,3 ,__,2B英,1A数,3B数,2A国,__,3A理,__,__,1B社 火 ,4 ,1A英,3B英,2A数,__,3A国,__,__,1B理,__,2B社 水 ,1 (これ以降省略) 水 ,2 シート2 (火曜1時間目1A教室、火曜2時間目2B教室が変更) ================ , ,1 ,1 ,2 ,2 ,3 ,3 ,4 ,4 月 ,1A,1A英, ,1A数, ,1A国, ,1A理, 月 ,1B,1B理, ,1B社, ,1B英, ,1B数, 月 ,2A,2A数, ,2A国, ,2A理, ,2A社, 月 ,2B,2B社, ,2B英, ,2B数, ,2B国, 月 ,3A,3A国, ,3A理, ,3A社, ,3A英, 月 ,3B,3B英, ,3B数, ,3B国, ,3B理, 火 ,1A,1A理,社会,1A国, ,1A数, ,1A英, 火 ,1B,1B数, ,1B英, ,1B社, ,1B理, 火 ,2A,2A社, ,2A理, ,2A国, ,2A数, 火 ,2B,2B国, ,2B数,理科,2B英, ,2B社, 火 ,3A,3A英, ,3A社, ,3A理, ,3A国, 火 ,3B,3B理, ,3B国, ,3B数, ,3B英, あっているという前提で以下、力技回答です。 シート1の名前を"1"にします。 シート2のL,N,P,R列をそれぞれ1,2,3,4時間目の途中計算に使います。 L1,N1,P1,R1にそれぞれ、1,2,3,4を入力、時間のラベル兼演算用に使用します。 L2に次の無駄に長い?式を入力、必要なだけ下方向にコピーします。 =INDEX(OFFSET('1'!$C$2,L$1+(ROW()-1-MOD(ROW()-1,7))/7*4,0,1,10),MATCH($B2&"*",OFFSET('1'!$C$2,L$1+(ROW()-1-MOD(ROW()-1,7))/7*4,0,1,10),0)) N,P,R列の2行目以降はL列のコピーでOKです。 D2に次の長い式を入力、必要なだけ下方向にコピーします。 =IF(L2=C2," ",RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(L2,"英","英語"),"数","数学"),"国","国語"),"理","理科"),"社","社会"),2)) F,H,J列の2行目以降はD列のコピーでOKです。 注意 1.セル参照の雨嵐なので、例に挙げたアドレスからずれる可能性があるときは、細心の注意を払って式を修正してください。特にROW()を使用しているため、行がずれるといちころです。 2.MATCH()は、最初に見つかったセルしか返さないので、シート1で教室がダブルブッキングしていてもエラーを返しません。 3.私ことRaistlinは、この回答を運用した結果について完全な責任はもてません。自己責任でお願いします。 提案 >それらがシート2の月1覧左にも入力されています。(ここは変わることはないので手入力です) もし、シート1で時間割をアレンジした結果をシート2に転記するという手順であれば、はじめにC,E,G,I列にL,N,P,R列をコピーすると早いのでは? これで外してたらどうしよう・・・。
その他の回答 (2)
- paku_i
- ベストアンサー率38% (19/49)
PANCHOさんと同意見です。 昨日の夜からず~っと考えていますが、やはり意味が良くわかりません。 私はEXCELの関数が比較的得意なので、答えられるようでしたら答えたいと考えております。 補足などがメールで届くように私も細く要求させていただきます。
補足
すみませんでした。自分の余計なたとえが、お二人を悩ませてしまったようです。でも、結構複雑なんです… 実は、時間割表を作りたいのです。シート1のA列3から、月曜日~金曜日までの日付があり、さらにB列には各曜日とも1~4時間目まで入力されています。各曜日とも4セル分ずつになります。また1行目には科目名が5つ(英数国理社)、2行目には担当者名が10名分入っています。1科目2名(2セル、氏名は適当にしてください)です。1時間に行われる講義は6つ(1A/1B/2A/2B/3A/3B教室において)ですので、10名中6名の覧が常に埋まります。6名の覧に入る文字は、2B社、3A国などです。各教科2名いますが、左側の人がA教室担当、右がBです。 シート2は、教室ごとの時間割です。タテに1A~3B、ヨコに1時間目~4時間目(各2セル分)、それが一日分ですから、その表が月~金の分5つあります。ちなみに各時間2セル作ってあるのは、左に既定の基本時間割、右には変更があった場合の科目名が入力されます。この変更覧セルに関数を入力したいのです。 シート1の月1時間目(C3~L3)には基本時間割の6講義が入力してあります(例えば1A国、1B社、2A社、2B英、3A理、3A英など)。それらがシート2の月1覧左にも入力されています。(ここは変わることはないので手入力です)ここで、1B社の担当者が休んだ場合、シート1の月1覧では1B社を消去し、1B数などに振り替えます。それを自動的にシート2の月曜表・1B1時間目右セルに表示させたいのです。しかも(わがまま行ってスミマセン)シート2に表示された時点で「社会」という文字にしたい(これで充分なので)のです。 その関数をオートフィルできるようなものにしないと入力が大変そうです。長い補足で恐縮ですが、是非よいお知恵をいただきたいと思っています。
- pancho
- ベストアンサー率35% (302/848)
申し訳ありませんが、何回読んでも質問の内容が理解できません。 もう一度、シート1には「どのくらいの範囲に、どんな値が設定されているのか」、シート2には「何がどこに入力され、それを元にどこに値を持ってきたいのか」、「シート2に入力された値と、シート1のどの値をどう比較して選択するのか」などを整理して補足してください。 具体的な例が書ければ、もっと参考になります。(多分、Vlookupで出来そうですが ...。) 以上。
お礼
すみません、お礼遅れました。メール届かなかったもので。 まだ試していないのですが、前提はあっているので試してみたいと思います。 皆さんありがとうございました。