- 締切済み
エクセルでの文字列の分割&結合、年齢の更新について
テキストファイルをエクセルに読み込ませて編集した後に、テキストファイルとして保存して あるソフトで使用したいと思っています。 そのソフトの仕様で思うようにいかないのでアドバイス下さい。 [山田太郎_28歳]といった一つのセルを翌年度に[山田太郎_29歳]にしたいのですが どういう方法を取れば良いでしょうか? テキストを開く際、[区切り位置]機能を使って[山田太郎]と[28歳]でセルを分けると _(アンダーライン)が消えてしまいますし… これが不可能な場合、[山田太郎_28歳]といった一つのセルを [山田太郎],[_28歳]もしくは[山田太郎_],[28歳](アンダーラインはどちらかに) と二つのセルに分ける方法はありますでしょうか? その場合、[_28歳]もしくは[28歳]を翌年度に[29歳]にしたいのですが どういう方法を取れば良いでしょうか? 最終的には元のセルに[山田太郎_29歳]としたいです。 VBAは分かりません。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
データー区切り位置で「山田太郎_28歳」を-をセパレータにして「山田太郎」「28歳]の2セルに分けて、「歳」を置換(空白に置換)で消して、28に+1して(1のセルをつくり、コピーしておいて、形式を選択して貼り付けー加算で) その後、山田太郎セルと、ーを&で結合し、「年齢」セルを&で結合し、「歳」も&で結合すれば良いのでは。 やっつけ問題で原理的に面白みのない問題かつ解決方法だが。 ーー 1歳アップは機械的に(生年月日データが無いらしいから、日にちの到来など考慮しないものとする)+1する案。 それぐらい質問に書いておくこと。 >_(アンダーライン)が消えてしまいますし 消したものは「-」で一定だから、後に補えば仕舞いだろう。
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! たびたびごめんなさい。 投稿後に気づきました。 D1セルの数式の行番号に間違いがあります。 D1セルは =SUBSTITUTE(A1,B1,C1) としてください。 そして、B1~D1セルを範囲指定 → オートフィルと書きましたが D1セルのフィルハンドルでダブルクリックの方が簡単だと思います。 何度も失礼しました。m(_ _)m
- bin-chan
- ベストアンサー率33% (1403/4213)
大まかには以下の流れ 1)テキストファイルを開く 2)内容を編集する 3)テキストファイルに保存する。 VBAで書けば簡単だけど「それ以外」の方法で。 2)の編集では、以下を行う。 a)[山田太郎_28歳]をひとつの列で読む。(列Aに入るとしましょう) b)列Aを列Bにコピーする。 c)データの区切り位置指定で、区切り文字(その他)で "_"を指定して、列Bを分解する。 d)列Cに[28歳]が入るので、置換(Ctrl+H)で"歳"を空文字に置換(消去)する。 e)列Dに式[=Bn & "_" & Cn+1 & "歳"](nはその行番号)を設定する。 f)e)のセルの右下にある■をダブルクリックして下方向にコピーさせる。 g)列Dをコピーして、列Eに「形式を選択して貼り付け-値(V)]でペーストする。 h)結果を確認する。満足できる結果であれば列A~列Dを削除する。 編集は以上。 上記手順を「マクロの記録」すれば、冗長ではあるがVBAのコードが生成されます。 勉強するネタになりますのでお試しあれ。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 ↓の画像のようにデータはA1セルからA列にあるとします。 B1セルに =MID(A1,FIND("_",A1)+1,FIND("歳",A1)-FIND("_",A1)-1) C1セルに =B1+1 D1セルに =SUBSTITUTE(A2,B2,C2) としてB1~D1セルを範囲指定 → D1セルのフィルハンドルで下へコピー! (エラー処理はしていません) 最後にD列を選択 → コピー → A1セルを選択 → 形式を選択して貼り付け → 「値」にチェックを入れOK 最後にB~D列すべてを削除! ※ 形式を選択して貼り付けを行わず、A~C列を削除してしまうとD列はエラーになります。 こんな感じではどうでしょうか? 参考になれば良いのですが・・・m(_ _)m
テキストファイルをどう処理するか分かりませんが、単に年齢を更新するだけなら、セル内容を以下の様にすればできます。 =("山田太郎_" & DATEDIF("1983/1/1",TODAY(),"Y") & "歳")