- ベストアンサー
Excel 2010で数式を作りたい!情報の並べ替えに困っています。
- エクセル2010で複数情報を項目ごとに分けて並べ替えたいです。数式で対応できる方法を教えてください。
- セルA1に7桁もしくは9桁の数字が並んでいるため、項目ごとに別セルに並べ替えたいです。
- マクロは分からないので、エクセル2010の数式だけで対応したいです。
- みんなの回答 (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)
その他の回答 (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)
お礼
お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。
補足
pidumさま、ありがとうございます。 さっそくやってみたのですが、BとEとI以外のところが#VALUEとなってしまいました。もしよろしければ解決方法をお教えいただけないでしょうか。 申し訳ございません、お時間があったらぜひお願いいたします。
- m_and_dmp
- ベストアンサー率54% (987/1817)
NO.2です。 誤りがありました。訂正します。 正: A12に =RIGHT(A9,LEN(A9)-LEN(A11)-1) 結果は 000123456 誤: A12に =RIGHT(A9,LEN(A9)-LEN(A11)) 結果は 000123456 ゼロの前にスペースが出ます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。
- m_and_dmp
- ベストアンサー率54% (987/1817)
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, ... にしましたが、結果が出たら並べ替えは自由です。
お礼
お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。
- Nouble
- ベストアンサー率18% (330/1783)
さぞや大変でしょう 式でも出来なくはないですけどね。 VBAか区切り位置でデータを分割することをお勧めします。 此方をご覧下さい http://www.becoolusers.com/excel/text-to-columns.html 如何でしょうか? お役に立てていたならば幸いです。
お礼
Noubleさま すぐにご回答くださりありがとうございました。 区切りでとも思ったのですが、使用するPCによってはDataタブ自体がなかったりするので、数式で、と思い投稿しました。VBAというのは、すみません、私には上級すぎて… データ分割で足りるところはそれで対応してみます。 ありがとうございました。
お礼
お返事おくれて申し訳ございません。 勉強になりました。ご回答ありがとうございました。