質問: エクセルで表の中のデータの並びを変える 例えば a1:名前(ふりがな)【男女 生年月日】 b1:郵便番号 b2:住所 b3:電話番号 次の行:空白 とあるのを a1:名前 b1:ふりがな c1:男女 d1:生年月日 e1~g1:郵便番号~電話番号 と並べ替えるにはどのような方法が考えられるでしょうか。25000レコードほどあり手作業でコピペするのは骨が折れるもので。【】の中は固定長で男女はどちらかの文字が入ります。そのあと半角のスペースがあり西暦4桁の整数、漢字の文字列"年",ゼロサプレスしない形で半角2桁の月数をあらわす文字列と文字列の"月"、同じルールで日をあらわす整数(文字列)と文字列の"日生"と続きます。それ以外のセルに入るデータは可変長文字列です。 エクセルはとにかくこれだけのデータを展開すると重くなるので分けてやるつもりです。本当はアクセスでやるべきなのでしょうが力量不足でして。 おわかりの方よろしくお願いします。
回答: a列セルの内容をb列、c列、d列に分けるには、 「データ」-「区切り位置」を使えば出来ると思います。 その前に、b列に入っている郵便番号、住所、電話番号を それぞれ、e列、f列、g列に持っていきます。 a1:名前(ふりがな)【男女 生年月日】 b1:郵便番号 b2:住所 b3:電話番号 4行目:空白 a5:名前(ふりがな)【男女 生年月日】 b5:郵便番号 b6:住所 b7:電話番号 8行目:空白 のようになっているとして、 e1セルに =if(mod((row(a1)-1),4)=0,indirect("b"&row(a1)),"") f1に =if(mod((row(a1)-1),4)=0,indirect("b"&row(a1)+1),"") g1に =if(mod((row(a1)-1),4)=0,indirect("b"&row(a1)+2),"") と式を入力して、最終行までコピー&ペーストします。 e列からg列を範囲指定して、「編集」-「コピー」、そのまま「編集」-「形式を選択して貼り付け」で「値」を貼り付けます。 b列を選択して、deleteキーを押します。 次に、a列セルの内容をb列、c列、d列に分けます。 質問文中にあるように 名前(ふりがな)【男女 生年月日】 ( や 【 で区切られているとすると、 a列を選択して、メニューバーの「データ」-「区切り位置」で[カンマやタブなど~」を選択して[次へ] [区切り文字]の、その他の右横にある空欄に ( を入力 その他(o)以外のチェックを全てはずして[次へ]、[完了] b列を選択して、「データ」-「区切り位置」で[カンマやタブなど~」を選択して[次へ] [区切り文字]の、その他の右横にある空欄に 【 を入力 スペースにチェックを入れて[次へ]、[完了] これで、ふりがな、男女、生年月日がそれぞれb列、c列、d列に収まります。 「編集」-「置換」で[検索する文字列]に ) を [置換後の文字列]には何も入れず[すべて置換] 同じく、「置換」で[検索する文字列]に 】 を [置換後の文字列]には何も入れず[すべて置換] a列を選択して、 「編集」-「ジャンプ」の[セル選択]ボタンを押して、[空白セル]にチェックを入れ、okボタンを押します。 そのままの状態で、「編集」-「削除」で[行全体]を選んでokボタンを押します。