こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルの枠に一つ一つ入力

お世話になります。
エクセルにてある一つの枠に「チョコレート、あめ、バナナ、ケーキ゛‥」入力されている文字を枠にそれぞれ一つずつ「チョコレート」「あめ」「バナナ」「ケーキ」と分けて入力していきたいのですが可能でしょうか。もし方法がありましたらお伺いできますでしょうか。
よろしくお願いいたします。

投稿日時 - 2020-08-04 14:49:39

QNo.9781178

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

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))
右にコピー

投稿日時 - 2020-08-06 16:22:44

ANo.5

#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関数は、該当が割り出せない場合には空白””を返させるための対策である。

投稿日時 - 2020-08-06 12:21:36

ANo.4

エクセル関数だけでできないか考えて、調べたところ
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の回答する前に、その前に、データー区切り位置以下のエクセル操作でのやり方を、述べるのを忘れましたが、普通はこの操作で、目標を達するものと思う。

投稿日時 - 2020-08-05 15:23:04

ANo.3

こういうのは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
チョコレートあめバナナケーキ゛
犬猫虎ウサギ
京都奈良滋賀石川
項目数は、行によって、可変でもよい
==
質問文章の中のことだが、エクセルをやるなら、「枠」でなく「セル」と言ってほしいよ。

投稿日時 - 2020-08-04 22:03:28

ANo.2

添附圖參照(Excel 2019)

Sheet2に於いて、
1.A列は空白の儘の放置プレー
2.次式を入力したセル B1 を右方及び下方にオートフイル
 ̄ ̄ =IFERROR(FIND("、",Sheet1!$A1,A1+1),999)

Sheet1に於いて、
3.次式を入力したセル B1 を右方及び下方にオートフイル
 ̄ ̄ =IFERROR(MID($A1,Sheet2!A1+1,Sheet2!B1-Sheet2!A1-1),"")

投稿日時 - 2020-08-04 17:17:22

ANo.1

こちらを参考に、区切り文字として「、」を指定してみては如何でしょうか。
https://www.becoolusers.com/excel/text-to-columns.html

投稿日時 - 2020-08-04 14:54:01

あなたにオススメの質問