- ベストアンサー
文字列として入力した学年を更新したい!
Excel2003を使って学童スポーツクラブの出席簿を作成しています。 【目的】 文字列として入力した学年を更新したい。 【状況】 クラブの学年表記が ・年少から年長=01から03 ・小学1年から6年=1から6 ・中学1年から3年=J1からJ3 と規定されています。 01から03を入力するため、学年を入力する列はセルの書式設定を 文字列にしています。 しかし、年度末に学年を更新しなければいけません。 そこで伺いたいことは、 1.文字列として入力してある学年をどのように更新したらよいのか? 2.03⇒1 や 6⇒J1 への更新はどのように設定したらよいのか? マクロはまだ使用できないので、可能であれば関数などのマクロ以外 の機能を使って問題を解決したいのですが、如何でしょうか? よい方法をご教授いただければと思っております。 何卒宜しくお願い致します。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
作業列を用意します (一時的なので、学年列の右隣にでも挿入します) 変換表を用意します(これも一時的なものです) 例 G H 01 02 02 03 .. .. という具合に空いているセルに作ります 学年列=C 作業列=D とすると D2 =VLOOKUP(C2,G$1:H$11,2) 以下、下にコピーします 完成した作業列をコピーして、学年列に「形式を選択して..」「値」で貼り付けます 変換が終わった後は、作業列、変換表は削除してもokです
その他の回答 (8)
- enunokokoro
- ベストアンサー率74% (3543/4732)
> 1.文字列として入力してある学年をどのように更新したらよいのか? 学年を示す列を[文字列]にしないで、誕生日を元に学年を計算する式を 用意して現在の日付から計算させてはいかが。 > 2.03⇒1 や 6⇒J1 への更新はどのように設定したらよいのか? リストを作って、そこに学年ごとの表記を用意して、[ VLOOKUP 関数] で参照してはいかが。 具体的な方法は、こちら↓を参考にしてリストの学年を示すものを作成。 http://www2.odn.ne.jp/excel/waza/function.html#SEC25 これなら誕生日を参照元にしていますので、年度が替わると学年を更新 してくれます。
お礼
最初からこのような数式を利用していれば よかったのですが・・・ 新規に出席簿を作成する際には、教えていただいた関数を 利用したいと思います。 ご回答いただきましてありがとうございました。
》 文字列として入力してある学年をどのように更新したらよいのか? 数値として入力してあるなら、その質問はなさらなかったと。 そういうことなら、学年を数値で入力して[ユーザー定義]で 00 に書式設定すれば好い。
お礼
本来ならいちからやり直したいところなのですが、 すでに一千名分の記録が入力済みでして・・・ 教えていただいた方法で最初から入力していれば こんなに悩まなかったことでしょう。 ご回答いただきありがとうございました。
- gyouda1114
- ベストアンサー率37% (499/1320)
ANo.3、4、5,6です はずかしながら 頭の整理ができていませんでした ANo.6を取り消して下さい さらに =B1&(C1+1) を =IF(C1="",A1+1,B1&(C1+1))に修正 整理すると A列右に作業列を3列挿入 B1 =LEFT(A1,1) → A1セルの左の1文字を抜き出す C1 =RIGHT(A1,LEN(A1)-1) → A1せるの文字列から左の1文字を除いて抜き出す。 D1 =IF(C1="",A1+1,B1&(C1+1)) → B1セルとC1セルに1を加えて表示する。 D列をコピー → 形式を選択して貼り付け → 値 → A、B、C列を削除 「04」を「1」、「7」を「J1」に置換及びJ4の行を削除してください
お礼
たしかに上手く変換することができました! 少し複雑ですが、この様な方法もあるんですね。 お手数をお掛けして申し訳ありませんでした。 ご協力に心から感謝いたします。
- gyouda1114
- ベストアンサー率37% (499/1320)
ANo.3、4、5です C1 =RIGHT(A1,LEN(A1)-1) を =RIGHT(A1,1) =RIGHT(A1,LEN(A1)-1) も間違いではないのですが 学年は全て2桁なので敢えてLEN(A1)-(A1の文字数から引く)を入れなくても左から1文字を抜き出せばよいことに気がつきました。
- gyouda1114
- ベストアンサー率37% (499/1320)
ANo.3、4です >2.03⇒1 や 6⇒J1 への更新はどのように設定したらよいのか? について解答してませんでした 「04」を「1」、「7」を「J1」に置換してください
- gyouda1114
- ベストアンサー率37% (499/1320)
ANo.3です 「A列(左)に3列挿入」を「A列(右)に3列挿入」に訂正してください。
- gyouda1114
- ベストアンサー率37% (499/1320)
A列に学年がある場合 A列左に3列挿入 B1 =LEFT(A1,1) → A1セルの左の1文字を抜き出す C1 =RIGHT(A1,LEN(A1)-1) → A1せるの文字列から左の1文字を除いて抜き出す。 D1 =B1&(C1+1) → B1セルとC1セルに1を加えて表示する。 D列をコピー → 形式を選択して貼り付け → 値 → A、B、C列を削除
- opechorse
- ベストアンサー率23% (435/1855)
学年表記の部分を削除して、 一からやり直したほうがいいと思います たとえばA1セルに誕生日を設定したとして 小学校1年生(2001年4月2日~2002年4月1日生)とすると (とりあえず該当しなければ_を表示します) =IF(A1>=DATE(2001,4,2), IF(A1<=DATE(2002,4,1),1,"_"),"_") あとは、表の形式でいいように改造してください
お礼
本来ならいちからやり直したいところなのですが、 すでに一千名分の記録が入力済みなので・・・ 教えていただいた数式は今後の参考にさせていただきます。 ご回答ありがとうございました!
お礼
御見それ致しました! VLOOKUP関数でこんな事も可能なんですね! 現状に即していて尚且つシンプルな解決方法を ご教授頂きました事にたいへん感謝致します。 ありがとうございました!