• ベストアンサー

エクセルで数字とアルファベットと文字列を分割する方法

noname#52504の回答

  • ベストアンサー
noname#52504
noname#52504
回答No.6

#2=#3です。 ●ユーザー定義関数版 動作の概要  第1引数で指定した文字列を、数字と文字に分割し、  第2引数で指定した番号の文字列を返す  ex. =Sample2("100AB3.4C",3) ⇒ "3.4"  A列の文字列についてB,C,D…列に返すのであれば、  B1セル:=Sample2($A1,COLUMN()-1)  として右方・下方にフィル '----------------↓ ココカラ ↓---------------- Function Sample2(myStr, myIdx)  Dim a() As String  f = IsNumeric(Left(myStr, 1))  j = 1  ReDim a(j)  For i = 1 To Len(myStr)   t = Mid(myStr, i, 1)   If (f <> IsNumeric(t)) And Not (f And t = ".") Then    f = Not f    j = j + 1    ReDim Preserve a(j)   End If   a(j) = a(j) & t  Next i  If myIdx <= j Then   Sample2 = a(myIdx)  Else   Sample2 = ""  End If End Function '----------------↑ ココマデ ↑---------------- ●Subプロシージャ版 動作の概要  A列1行目以降の文字列を、  数字と文字に分割し、B列以降に転記する '----------------↓ ココカラ ↓---------------- Sub Sample3()    d = "A1" '元データの最初のセル  r = "B1" '結果表示範囲の最初のセル    Dim a() As String  For k = Range(d).Row To Cells(65536, Range(d).Column).End(xlUp).Row   ReDim a(1 To 1)   myStr = Cells(k, Range(d).Column)   f = IsNumeric(Left(myStr, 1))   j = 1   ReDim a(1 To j)   For i = 1 To Len(myStr)    t = Mid(myStr, i, 1)    If (f <> IsNumeric(t)) And Not (f And t = ".") Then     f = Not f     j = j + 1     ReDim Preserve a(1 To j)    End If    a(j) = a(j) & t   Next i   Cells(k, Range(r).Column).Resize(1, j) = a()  Next k End Sub '----------------↑ ココマデ ↑---------------- いずれもExcel2003で動作確認済。 ただし、最低限の記述しかしていないので、 コーディングは参考にしない方がよろしいかと。 不明な点も多いと思いますし、 ご要望に沿わない点もあるかもしれませんが、 これ以上は完全に作業になってしまいますから、 最終回答ということにさせてください。 ■Excelでお仕事!「VBA基本」メニュー http://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html

cim202
質問者

お礼

回答本当に有難うございます。 上手く出来ました。 サイトも教えて頂き有難うございます。 サイトは印刷して通勤途中に読んでます。 他にも色々やりたい事があるので、勉強がんばりたいと思います。

関連するQ&A

  • Excel同一セル内の、アルファベットと数字を別々のセルに置き換える方法を教えてください

    ExcelのA列のセルに、アルファベットと数字の組み合わせが3000行くらい入っています。 アルファベットは1~5個でA~Z、 数字は1~3個で0~9  全て半角です。 の組み合わせです。アルファベットと数字の配置は A1    A12    A123 AB1 AB12 AB123 HD167 SDM12 WB987 の組み合わせです。 (アルファベットと数字はそれぞれまとまっていて、入り混じることはありません) これを、   A  B  C   1 A1  A   1 2 A12 A 12 3 A123 A 123 4 AB1 AB 1 のように、アルファベットと数字を別々にセルに置き換えたいのです。 マクロを使わず、B列以降のセルを使って関数でできないでしょうか? よろしくお願いいたします。

  • エクセルの文字列並べ替えについて

    エクセルの文字列並べ替えについて エクセル2000です。 半角文字列の数字とアルファベットを通常のエクセルの機能で昇順で並べ替えた場合 012 013 111 1AA 1B1 211 222 22C 23A 2AB 2BC のように並ぶと思います。(ここでの数字は数値でなく、すべて文字列です) 数字→アルファベットの順番のようです。 これを「アルファベット」→「数字」の順番で並べ替える方法はないでしょうか? 以下のような順にです。 ユーザー定義のリストに基づいた並べ替えがあることは存じていますが、3桁だけでも英数混在だと36×36×36=46,656個のリストを登録しなければならないことになり、現実的と思えません。 目的は、ホストコンピュータから出力される紙のデータがなぜかこのような順で出てきて、それにエクセルで作成したデータをあわせる必要が出てきたためです。 012 013 1AA 1B1 111 2AB 2BC 211 22C 222 23A エクセルの一般機能でもVBAでもかまいません。ご教示いただけると幸いです。

  • エクセルでアルファベットと日本語の文字列を分割する方法

    エクセルで各セルに "Beatlesビートルズ" "Rolling Stonesローリング・ストーンズ" のような英語とカタカナ表記がつながっている(間にスペース等ない)文字列を "Beatles" "ビートルズ" "Rolling Stones" "ローリング・ストーンズ" のように分割する方法はありますでしょうか データが少なければコピペですみますが 何千件になるととてもやってられません 関数もしくはVBAで可能であれば教えてください データは同じ列に縦に並んでいます

  • Excel VBA 文字列分割の方法で

    EXCEL および WORD のVBAです。 2003 および 2010でやっています。 たとえば文字列で以下のようなものがあったとき、 12,6,"abcde","(3,4)","efg""h""ijk",3 このとき、文字列をカンマ(,)で分割して   12   6   "abcde"   "(3,4)"   "efg""h""ijk"   (あるいは efg"h"ijk)   3 のようにして抽出したいのですが、どのような方法があるでしょうか。 たとえば、      mid(文字列,i,1) のようにiの値を文字列の長さ分ループさせて、1文字ずつ自力で 文字列の範囲や""などを解釈して分割するしかないのでしょうか。 それともスマートな方法があるのでしょうか。 どなたか、よろしくご教授ください。

  • Excel同一セル内の、アルファベットと数字の順番を入れ替えについて教えてください

    ExcelのA列のセルに、アルファベットと数字の組み合わせが3000行くらい入っています。 アルファベットは1~3個でA~Z、 数字も1~3個で0~9 の組み合わせです。アルファベットと数字の配置は A1    A12    A123 AB1 AB12 AB123 ABC1 ABC12 ABC123 の9通りか、数字が先にくる場合の9通りのいずれかです。 (アルファベットと数字はそれぞれまとまっていて、入り混じることはありません) これを、 1A 123ABC  のように、数字を前に持ってくるように統一したいのです。 もともと数字が前に入っているセルはそのままで有効です。 マクロを使わず、B列以降のセルを使って関数でできないでしょうか? ご説明がうまくできなくて申し訳ないです。 よろしくお願いいたします。

  • 《エクセル》列(コラム)のアルファベットが数字に・・・

    教えて下さい。 通常エクセルの列(コラム)はアルファベットで 標記されていると思いますが、突然数字での 標記に変わってしまいました。そのため=R[1]C[1]のように 関数が標記されるため、大変使い辛いです。 自分では設定を変えたつもりはないのですが・・・ どなたか設定を元に戻す方法を教えてください。 お願いします。

  • ランダムなアルファベットの文字列を覚える方法

    ランダムな数字の文字列を覚える方法だったら、 ネットで検索すれば、たくさん出てきますが、 ランダムなアルファベットの文字列を覚える方法は、 ネットで検索しても、出て来ない気がします。 ランダムなアルファベットの文字列を覚える方法は、 何か、ありませんか? そして、こういうことを、調べるには、 ネットで、どういうキーワードで、検索すれば、いいですか? 但し、英単語を覚えたいわけでは、ありません。 あくまでも、ランダムな文字列を、覚えたいのです。

  • Excelの列の表示がアルファベットから数字にかわってしまった。

    エクセルの座標表示と言うのでしょうか、行は数字で、列はアルファベットになっているはずなのですが、何かの拍子で、行列とも数字になってしまいました。   A  B  C          1 2 3 1               1 2  (通常)     →   2           3               3    セルを範囲で参照したりする場合など、とても苦労しております。(といいますか、どの座標を選択しているのかがこれだとわかりません。) どなたか、元のアルファベット表示への変更方法を至急教えてください。よろしくお願いいたします。

  • Excelの列欄がアルファベットじゃなくて数字なっているので、アルファベットに直す方法を教えてください。

    表題のとおり、Excelの行は通常どおり数字なのですが、列がアルファベットでなく数字になってしまっています。不便なため、列はアルファベットに戻したいです。 戻す方法ご存知の方教えてください。 OSはWindows XP で エクセルは2003です。

  • エクセル 文字列の中の数字を揃えるには?

    セルの書式設定について教えて下さい。 セルの文字列の数字に小数点以下のあるものと小数点以下のないものがあります。 例: 高度5km , 高度10.1km 「高度」という文字と「km」という文字は列全体のセルで同じです。 これを、このように揃えて表示させることは可能でしょうか? 高度 5. km 高度10.1km 「高度5km」の方は「高度」と「5」の間、「.」とkmの間にスペースを入れてあります。 要はセルの中で小数点の位置で揃えたいです。 教えて下さい、宜しくお願いします。