• ベストアンサー

エクセルのデータを1行ずつ別々にしたい。

次のような1列のデータを2列に変更したいのです。 エクセルの初心者なものでいろいろ工夫してみましたがうまくいきません。良い方法を教えてください。データは1000行くらいあります。 元のデータ 1 あ 2 a 3 い 4 b 5 う 6 c ほしいデータ 1 あ    a 2 い    b 3 う    c 4 え    d 5 お    e 6 か     f どうぞ、よろしくお願いします。

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

  • ベストアンサー
noname#62235
noname#62235
回答No.3

#2です。 文字列の長さを返す関数には、全角を1文字と数える「LEN」と全角文字を2文字と数える「LENB」の2種類があります。 これを使えば、LENB(A1) = LEN(A1)のとき、A1セルに入っているのは半角文字ばかり、ということがわかります。 先ほど作ったA列に、これを使って =IF(LENB(B2)=LEN(B2), 1, 2) と入れてみてください。 そして、同様にこれをテータの最後の行までコピーします。 すると、英語の列には「1」が、日本語の列には「2」が入っているはずです。 同じようにオートフィルタを使えば、取り出せますよ。

ei60
質問者

お礼

うわぁ~、うまくいきました。 てっきりマクロをくまないといけないと思っていたのですが、1つの関数でこなせるとはすごいですね。 昔、BASICでプログラムを組んでいましたのでLENは知っていましたが、LENBがあってそれを組み合わせるとは思いつきませでした。 2度にわたってていねいで的確なご回答いただき本当にありがとうございました。助かりました。

その他の回答 (2)

noname#62235
noname#62235
回答No.2

一番手っ取り早いのはマクロを組むことでしょう。 マクロが組めないなら、次のような方法を試してみてください。 1.A列の左に1列挿入する 2.A1に「1」、A2に「2」と入れる 3.A1:A2を選択して、フィルハンドルをつかみ下に向かってドラッグする 4.これで、A列に「1・2・1・2・・・・」というのができましたね。 5.次に「オートフィルタ」の設定をします。まず、見出し行を作るため1行目の上に1行挿入します 6.A1に「番号」、B1に「データ」とでも入力します。 7.「オートフィルタ」を設定します。 8.「番号」のところに、プルダウンメニューができていますので、メニューを出し、「1」を選びます。 9.すると、奇数列のデータだけが抽出されます。ここで、範囲選択して、別のシートにコピーしてやれば、奇数列の取出しが完了します 10.次に「2」を選び同じことをします。 1度限りしかやらないのであれば、マクロを組むのと大して手間の差はないでしょう。 何度も繰り返すのであれば、マクロを組むべきですが。

ei60
質問者

補足

早速のご返事ありがとうございました。 見事に全部が区分けでき感動しました。助かりました。 別のデータなのですが、こちらは少しだけ不規則で日本語がたまに2行になったりします。日本語の行だけ(全角)、英語の行だけ(半角のみ)を2列に分けることができますか。 1  drum 2   n. 太鼓 3  drunk 4   a. 酔った 5   n. 酔っぱらい たびたびですみませんが、よろしくお願いします。

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.1

はじめまして まずB1に =A2 と入れ、必要なだけ下へコピーします。 そしてB列を選択してコピー、そして同じくB列に「形式を選択して貼り付け」で「値」を選択して貼り付けます。 次にC1に =mod(row(),2) と入れ必要なだけ下へコピーします。 そしてC列を選択してコピー、そして同じくC列に「形式を選択して貼り付け」で「値」を選択して貼り付けます。 次にAからC列を選択して「並び替え」。「最優先されるキー」をC列にし、「降順」で並び替えます。 すると上半分に求めたい表ができますので、下半分を選択して削除すれば完成です。

ei60
質問者

お礼

早速にご返事いただきありがとうございました。 No2さんの回答で解決しました。

関連するQ&A