Excel 2010で数式を作りたい!情報の並べ替えに困っています。

このQ&Aのポイント
  • エクセル2010で複数情報を項目ごとに分けて並べ替えたいです。数式で対応できる方法を教えてください。
  • セルA1に7桁もしくは9桁の数字が並んでいるため、項目ごとに別セルに並べ替えたいです。
  • マクロは分からないので、エクセル2010の数式だけで対応したいです。
回答を見る
  • ベストアンサー

エクセル2010で数式を作りたいです

Excel 2010を使用しております。 情報の並べ替えについて困っており、投稿させて頂きました。 どなたかお詳しい方、どうかお助けください。 セルA1に複数情報が並んでいるので、項目ごとに分けて別セルに並べ替えたいのですが、どのような式をつくったらきれいにまとめられるでしょうか。マクロとかはよく分からないので、数式で対応できたらと思います(カッコ内は例です)。 B1に店番・・・7桁もしくは9桁の数字 (121212121) C2に店名・・・スペースを含む3文字から30文字の英字 (The World Game Tournament) D1に日付・・・「2013-05-20」というフォーマットになっています E1に時間・・・「08:40:09」というフォーマットになっています F1に親番・・・3桁から5桁の数字(54321) G1に組織名・・・スペースを含む3文字から40文字の英字 (ABC the first temple) H1に機械番号・・・スペースを含まない8桁から10桁の数字(000123456) I1に機械区分・・・スペースを含まない10文字の英字(EXAMPLEARE) 上記がすべてA1にスペースをはさんで並んでいて、100ちかくあります。 自分でやってみた式では桁数が違うせいか変なところで切れてしまったり…もうどうしたらいいものか、困っております。 勉強不足で申し訳ないのですが、どうかよろしくお願いいたします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

A1セルから下方にデータが有るとしてB1セルには次の式を入力して下方にドラッグコピーします。 =IF(ISNUMBER(LEFT(A1,9)*1),LEFT(A1,9),LEFT(A1,7)) C1セルには次の式を入力して下方にドラッグコピーします。 =LEFT(SUBSTITUTE(A1,B1,""),FIND("-",SUBSTITUTE(A1,B1,""))-5) D1セルには次の式を入力して下方にドラッグコピーします。 =MID(A1,FIND("-",A1)-4,10) E1セルには次の式を入力して下方にドラッグコピーします。 =MID(A1,FIND(":",A1)-2,8) F1セルには次の式を入力して下方にドラッグコピーします。 =IF(ISNUMBER(MID(A1,FIND(":",A1)+6,7)*1),MID(A1,FIND(":",A1)+6,7),MID(A1,FIND(":",A1)+6,5)) G1セルには次の式入力して下方にドラッグコピーします。 =MID(A1,FIND(F1,A1)+6,LEN(A1)-(LEN(I1)+LEN(H1))) H1セルには次の式を入力して下方にドラッグコピーします。 =IF(ISNUMBER(MID(A1,LEN(A1)-21,11)*1),MID(A1,LEN(A1)-21,11),IF(ISNUMBER(MID(A1,LEN(A1)-20,10)*1),MID(A1,LEN(A1)-20,10),MID(A1,LEN(A1)-19,9))) I1セルには次の式を入力して下方にドラッグコピーします。 =RIGHT(A1,10)

vgnfku
質問者

お礼

お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。

その他の回答 (5)

noname#203218
noname#203218
回答No.5

下記式で可能かと思います。 文字列を空白置換を数式で実施している関係でB1~I1までの全ての式をコピペしないと正解は得られません。 B1=TRIM(LEFT(A1,FIND(" ",A1))) C1=TRIM(LEFT(SUBSTITUTE(A1,B1,""),FIND("/",SUBSTITUTE(A1,B1,""))-6)) D1=TRIM(MID(A1,FIND("/",A1)-5,11)) E1=TRIM(MID(A1,FIND(":",A1)-2,8)) F1=TRIM(LEFT(TRIM(SUBSTITUTE(A1,B1&" "&C1& " "&D1&" "&E1,"")),FIND(" ",TRIM(SUBSTITUTE(A1,B1&" "&C1& " "&D1&" "&E1,""))))) G1=TRIM(LEFT(TRIM(SUBSTITUTE(SUBSTITUTE(A1,B1&" "&C1& " "&D1&" "&E1&" "&F1,""),I1,"")),FIND(" ",TRIM(SUBSTITUTE(SUBSTITUTE(A1,B1&" "&C1& " "&D1&" "&E1&" "&F1,""),I1,"")),LEN(TRIM(SUBSTITUTE(SUBSTITUTE(A1,B1&" "&C1& " "&D1&" "&E1&" "&F1,""),I1,"")))-10))) H1=TRIM(SUBSTITUTE(SUBSTITUTE(A1,B1&" "&C1&" "&D1&" "&E1&" "&F1&" "&G1,""),I1,"")) I1=RIGHT(A1,10)

vgnfku
質問者

お礼

お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。

vgnfku
質問者

補足

pidumさま、ありがとうございます。 さっそくやってみたのですが、BとEとI以外のところが#VALUEとなってしまいました。もしよろしければ解決方法をお教えいただけないでしょうか。 申し訳ございません、お時間があったらぜひお願いいたします。

  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.4

NO.2です。 誤りがありました。訂正します。 正: A12に =RIGHT(A9,LEN(A9)-LEN(A11)-1) 結果は 000123456 誤: A12に =RIGHT(A9,LEN(A9)-LEN(A11)) 結果は  000123456 ゼロの前にスペースが出ます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VBAになってしまいますが、一例です。 尚、元データはA1セルからあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, str1 As String, str2 As String, str3 As String, myArray For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 2 To Len(Cells(i, 1)) - 1 str1 = StrConv(Mid(Cells(i, 1), k - 1, 1), vbNarrow) str2 = StrConv(Mid(Cells(i, 1), k, 1), vbNarrow) str3 = StrConv(Mid(Cells(i, 1), k + 1, 1), vbNarrow) If str2 = " " Then If str1 Like "[0-9]" And str3 Like "[a-z A-Z]" Then Cells(i, 1) = WorksheetFunction.Replace(Cells(i, 1), k, 1, "*") ElseIf str1 Like "[a-z A-Z]" And str3 Like "[0-9]" Then Cells(i, 1) = WorksheetFunction.Replace(Cells(i, 1), k, 1, "*") ElseIf str1 Like "[0-9]" And str3 Like "[0-9]" Then Cells(i, 1) = WorksheetFunction.Replace(Cells(i, 1), k, 1, "*") End If End If Next k Range("D:D").NumberFormatLocal = "yyyy-mm-dd" Range("H:H").NumberFormatLocal = "@" myArray = Split(Cells(i, 1), "*") For k = 0 To UBound(myArray) Cells(i, k + 2) = myArray(k) Next k Cells(i, 1) = Replace(Cells(i, 1), "*", " ") Next i Columns.AutoFit End Sub 'この行まで こんなんではどうでしょうか?m(_ _)m

vgnfku
質問者

お礼

お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。

  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.2

A1に、 121212121 The World Game Tournament 2013-05-20 08:40:09 54321 ABC the first temple 000123456 ESAMPLEARE A2に =LEFT(A1,FIND(" ",A1,1)-1) 結果は 121212121 になります。 A3に =MID(A1,FIND(" ",A1,1)+1,100) 100というのは、多数という意味です。結果は、 The World Game Tournament 2013-05-20 08:40:09 54321 ABC the first temple ESAMPLEARE A4に =LEFT(A3,FIND("2",A3,1)-2) 結果は The World Game Tournament A5に =MID(A3,FIND("2",A3,1),10) 結果は 2013-05-20   A6に =MID(A3,FIND("2",A3,1)+11,8) 結果は 08:40:09 A7に =MID(A3,FIND("2",A3,1)+20,5) 結果は 54321 A8に =MID(A3,FIND("2",A3,1)+26,100) 結果は ABC the first temple 000123456 ESAMPLEARE A9に =LEFT(A8,LEN(A8)-11) 結果は ABC the first temple 000123456 A10に =RIGHT(A9,11) 結果は e 000123456 A11に、 =IF(LEFT(A10,1)=" ",LEFT(A9,LEN(A9)-11),IF(MID(A10,2,1)=" ",LEFT(A9,LEN(A9)-10),IF(MID(A10,3,1)=" ",LEFT(A9,LEN(A9)-9)))) 結果は ABC the first temple A12に =RIGHT(A9,LEN(A9)-LEN(A11)) 結果は  000123456 A13に =RIGHT(A8,10) 結果は ESAMPLEARE A3 ,A8,A9,A10は補助式です。 並びは、計算のしやすさから、ご質問のA1, B1, C1, ... ではなく A1, A2, A3, ... にしましたが、結果が出たら並べ替えは自由です。

vgnfku
質問者

お礼

お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

さぞや大変でしょう 式でも出来なくはないですけどね。 VBAか区切り位置でデータを分割することをお勧めします。 此方をご覧下さい http://www.becoolusers.com/excel/text-to-columns.html 如何でしょうか? お役に立てていたならば幸いです。

vgnfku
質問者

お礼

Noubleさま すぐにご回答くださりありがとうございました。 区切りでとも思ったのですが、使用するPCによってはDataタブ自体がなかったりするので、数式で、と思い投稿しました。VBAというのは、すみません、私には上級すぎて… データ分割で足りるところはそれで対応してみます。 ありがとうございました。

関連するQ&A

  • エクセルの数式について

    エクセルのセルの中に A1のセル:214547-85-49 A2のセル:21459-25-58 A3のセル:2145778-37-1 というように、数字が入っており、桁数も違うのですが、-と、-の間の2桁あるいは1桁の数字だけを取り出す関数などありましたら教えてください。

  • エクセルの数式について

    A1のセル:214547-855-49 A2のセル:21459-2-58 A3のセル:2145778-37-1 というように、数字が入っており、桁数も違うのですが、左から-が二つ目以降の数字だけを取り出したいのですが、一桁のときは、RIGHT関数だと‐が入ってしまったりします。 いい関数などを教えていただけるとうれしいです。

  • 【エクセル】 複数情報をふくむセルを内容で区切る

    こんにちは。 セルA1に ABC Bar 2013-01-19 00:33:17 47777 New World 1154789650 セルA2に Cafe du rock 2013-03-10 00:30:30 65897 New Era City 6500321540 という情報があったとして、 -で結ばれた日付のみをセルB1, B2に抽出することは可能ですか。 ↑ 上記の質問を投稿させていただき、おかげさまで回答を得られました。 しかし、欲をいえば、内容ごとに区切れたら最高なのです。こんな機能ってあるのでしょうか。 区切りたい内容は以下の通りです。 セルB1に 一番左の英字(ABC Bar) セルC1に 日付(2013-01-19) セルD1に 時間(00:33:17) セルE1に 5桁の数字(47777) セルF1に 右から二番目の英字(New World) セルG1に 一番右の10桁の数字(1154789650) 行によってはそれぞれの情報の間に1スペースだったり、2スペースだったり… また、英字の部分は文字数がまちまちです。 せめて、右から2番目の英字だけでも抽出できたらと思います。 ちなみにエクセル初心者でマクロなどよく分からないので、 できるだけシンプルな方法をご教示ください。 どうぞよろしくお願いいたします。

  • エクセルの数式設定

    例えばA1セルが2で、A2セルが3の場合。 「A1/A2」という式をA3のセルに設定した場合A3のセルは0.666666・・・・・と結果になります。 この場合A3の答えを四捨五入して「1」ということにできるのでしょうか? 表示桁数を1桁にすれば表面上は「1」になるのですが。どうしても内部では「0.6666・・・・・」と処理されているようです

  • Excelのセルの数字のみを別のシートのセルに転写

    Excelのセルの先頭に固定した桁数(例として7桁)の半角数字と文字数はフリーの全角の文字を入力し、別のシートのセルに固定した桁数(例として7桁)の半角数字だけを転写する方法を教えてください。

  • エクセル 数値だけ抽出するには?

    エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか? 文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。 A列からb列のように変換したいのです。 A列          B列 PMID:_12345678    12345678 PMID:_123456     123456 宜しくお願いいたします。

  • エクセルで桁数の分からない数値を右から1数値ずつ抜き出したい

    エクセルで教えて下さい!! 桁数の分からない数値があります。 12345を他のセルに1数値づつ抜き出したい。 桁数が分かっていれば簡単なのですが… 桁数が分からない為その12345が入っていたセルには123456と6桁入る場合もあります。 RIGHTなら右から2文字とか3文字とか抜き出しますが…1つのセルに1つの数字を抜き出したいのです。 RIGHTなら1番右1文字は抜き出せても12345が入っている場合、2番目の4の数値を1文字だけ抜き出す事って不可能ですよね。(45を1つのセルに抜き出す事になります) 説明下手で申し訳ないですが(~_~;)分かれば教えて下さい宜しくお願いします!!ヽ(^o^)丿

  • エクセル セルを3つに分割する数式

    お世話になります。 表題通り セルを3つに分割する数式についてアドバイスを頂けると助かります。 作業の円滑化のために、区切り位置は使用しないつもりです。 1つのセルに 「10 20 30 」(数字スペース数字スペース数字)のような 3つの数字が入っており、それを分割したいのですが、 次のような桁数がバラバラなものも、正しく分割できるA2,A3,A4の数式はありますでしょうか? 例:       1        2      3     4 A  5 10 200      5 10 200 B  100 0 100  100 0 100 C 30 30 30 30 30 30 A2の場合は、 =LEFT(A1,FIND(" ",A1)-1) でうまくいきましたが、 真ん中、右側がうまくいきません。 宜しくお願いいたします。

  • エクセルで、数字だけを抽出するには?

    ひとつのセルの中に数字や文字やスペースが含まれます。また数字の桁もまちまちです。 ここから数字のみを取り出す関数を教えてください。 よろしくお願いします。

  • エクセルの並べ替え

    エクセル98を使用しています。 文字の入ったものの並べ替えの仕方を教えてください。 たとえば、a123のセルとa1000というセルを昇順に並べ替えようとすると「a1000」の方が先にきてしまいます。 これを数字だけの昇順に並ぶように設定するにはどのようにしたらよいのでしょうか?やはり、0(ゼロ)をいれるなどして、桁を合わせなければだめなのでしょうか?どなたか教えてください。

専門家に質問してみよう