- 締切済み
エクセルの枠に一つ一つ入力
お世話になります。 エクセルにてある一つの枠に「チョコレート、あめ、バナナ、ケーキ゛‥」入力されている文字を枠にそれぞれ一つずつ「チョコレート」「あめ」「バナナ」「ケーキ」と分けて入力していきたいのですが可能でしょうか。もし方法がありましたらお伺いできますでしょうか。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Chiquilin
- ベストアンサー率30% (94/306)
hiro_1116さんが回答している通り データの区切り位置でやるのが 簡単だろうと思います。返事がないのでそれで支障があるのかどう か分かりませんけど。 数式でやる場合 バージョン次第です。 A1にデータがあるとして Office365なら =TRANSPOSE(FILTERXML("<a><b>"&SUBSTITUTE(A1,"、","</b><b>")&"</b></a>","//b")) でいいです。古いバージョンの場合 =TRIM(MID(SUBSTITUTE($A1,"、",REPT(" ",999)),COLUMN(A1)*999-998,999)) 右にコピー
- imogasi
- ベストアンサー率27% (4737/17069)
#4ほかです。 #4で紹介したWEB記事の、関数の解説をしてみます。 関心が興ったのでメモしてみました。 初めての人に文章で説明すると、ずいぶん長くなり、WEB記事でも詳細説明は省略したのだろうと思います。 下記も読んでもわからないと思うが、関数経験者で判る人も居ると思ってあげます。 ======= (1)事前準備作業 '何でも初めと終わりは、繰り返し処理では、状況を乱します。中間での処理と違う点が出ます。 これを同じパターンにするために、文字列の最初と終りの2か所に、 区切る文字(以下Xという)を強制的に付加します。 この巧妙さが分かるかな。 (2)WEBの説明サンプルのD5セルでは、左から数えて 1.D5セルでは、区切り文字の第1と第2 2.E5セルでは、区切り文字の第2と第3 3.F5セルでは、区切り文字の第3と第4 以下同じ について、その回だけ区切り文字(Xというとする)を、別の「出現があり得ない文字」(Yというとする)に置き換える。 そして置換後で、初めて見つかるY文字と、すぐ次に続いて見つかるYの文字の間の 文字列を、MID関数で切り出し、分離後の項目データ(各列に納まるデータ)とする (2)がエクセル関数でできる理由として、 SUBSTITUTE関数には、 何番目に出現するかの文字列を狙って、他の文字列に置換できる、第3引数が設けられている、ことからこれが可能です。 一般には、第3引数の利用されるケースは多くないだろうが。 一時的に(たとえば3番目に出現するXだけを、Yに置き換える機能がある。これで第2のXと第3のXをYに置き換えられる。 (3)そして最初の関数式を入れるD5セルでは、置換後の文字列で、1番目のYと2番目のYの間をMID関数で切り出すのである。 MID関数で、望みの文字を切出せるのは、 元の文字列 スタートの文字番号 切出す文字数を 指定できるからです ーー この文字Yのあり場所(何文字目か)を求めるのは、FIND関数を使う。 しかしFIND関数は3番目に出現する文字位置を捉えたりできない。残念である。 FIND関数は、探索'開始(文字)位置は指定できるが、次列のセルの式に引き渡せない。これを解決すれば、別解法が生まれるかも。 (4)第何番目と第何番目+1の2つのX間の文字列かを、列の場所で決めないとならないが、 WEBの説明サンプルでは、D4,E4,F4セル・・に手動か関数で連続整数を入れるやり方になっている 別のやり方では、D5セルの式の中で、D$4やE$4などをつかっている場所は、Column()-3を使う手もあると思う 式の最初のISERROR関数は、該当が割り出せない場合には空白””を返させるための対策である。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセル関数だけでできないか考えて、調べたところ https://blog-tips.sekenkodqx.jp/2019/08/23/excel-split-function00001/ Excel CSVなどの文字列の分割を関数で行う方法 がありました。 しかしこの式を創出したり、理解できるのは、並みのエクセル関数経験者でも無理と思う。 やってみるならば、この記事の例のD5セルの式は =IFERROR(MID($C5,FIND($C$2,SUBSTITUTE($C5,$B$2,$C$2,D$4))+LEN($B$2),FIND($C$2,SUBSTITUTE($C5,$B$2,$C$2,D$4+1))-(FIND($C$2,SUBSTITUTE($C5,$B$2,$C$2,D$4))+LEN($B$2))),"") ですから、使ってください。ダウンロードすればこの式が出てくるようだが。写真の式では、使えないので。 C5の式は =$B$2&B5&$B$2です。 === 追記 小生が、前のVBAの回答する前に、その前に、データー区切り位置以下のエクセル操作でのやり方を、述べるのを忘れましたが、普通はこの操作で、目標を達するものと思う。
- imogasi
- ベストアンサー率27% (4737/17069)
こういうのはVBAにSplit関数というのがあり、それの利用向けだ。 CSVデータをシートに読み込むようなとき便利で使われる。 例データ A1:A3 チョコレート、あめ、バナナ、ケーキ゛ 犬、猫、虎、ウサギ 京都、奈良、滋賀、石川 標準モジュールに Sub test01() Dim w As Variant For i = 1 To Range("A1000").End(xlUp).Row w = Split(Cells(i, 1), "、") For j = 0 To UBound(w) Cells(i, j + 2) = w(j) Next j Next i End Sub 実行後 B1:E3 チョコレート あめ バナナ ケーキ゛ 犬 猫 虎 ウサギ 京都 奈良 滋賀 石川 項目数は、行によって、可変でもよい == 質問文章の中のことだが、エクセルをやるなら、「枠」でなく「セル」と言ってほしいよ。
- msMike
- ベストアンサー率20% (364/1804)
- hiro_1116
- ベストアンサー率30% (2556/8268)
こちらを参考に、区切り文字として「、」を指定してみては如何でしょうか。 https://www.becoolusers.com/excel/text-to-columns.html