ここから質問投稿すると、最大10000ポイント当たる!!!! >>

ある一つのセルにテキストデータを貼り付けると、
そのデータを項目毎に、別のセルに振り分けるという
処理が実行可能でしょうか?

※詳細は添付画像をご参照いただけると幸いです。

画像内のセルB24・B25・B26の項目は、
初めから入力されているというパターンでも
いいです。

参考になる関数・もしくはマクロVBAがあれば
教えていただきたいです。
よろしくお願いいたします。

「エクセルの関数またはマクロについて」の質問画像

A 回答 (4件)

こんばんは!



VBAでの一例です。
「テキストデータ」はH21セルにコピー&ペーストするとします。
尚、画像の行のB・C列の区切りは全角スペースが入っているという前提です。

Sub Sample1()
 Dim k As Long, myStr As String, myAry
  myAry = Split(Range("H21"), vbLf) '//←H21セルはテキストデータを貼り付けるセル番地//
   For k = 0 To UBound(myAry)
    myStr = myAry(k)
     With Cells(24 + k, "B")
      .Value = Left(myStr, InStr(myStr, " ") - 1) '//←ダブルクォーテーションの間は全角スペース//
      .Offset(, 1) = Mid(myStr, InStr(myStr, " ") + 1, Len(myStr)) '//←同上//
     End With
   Next k
End Sub

※ 元データセル(コード内の H21 )は実際のセル番地に合わせてください。
こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!
望み通りの結果が得られました!
本当に助かりました!!

お礼日時:2018/08/07 11:50

こんにちは



>画像内のセルB24・B25・B26の項目は、
>初めから入力されているというパターンでも
>いいです
VBAの方が簡単な気もしますが、関数でやってみました。

関数の場合、テキストボックスの値を直接参照できませんので、以下の準備が必要です。
<準備>
・テキストボックスは、ActiveXのテキストボックスを利用し、
・見えなくなるセルにリンクさせておく。
 (添付図では、わざとずらしてありますが、H25にリンクしてあります)
・複数行対応にして、改行表示が効くようにしておく。

※ B列の文字は先に入力されているものとしています。

添付図では、C24セルに
=TRIM(SUBSTITUTE(MID($H$25,FIND(B24,$H$25)+LEN(B24),IF(ROW()=26,LEN($H$25)+1,FIND(B25,$H$25))-FIND(B24,$H$25)-LEN(B24)),CHAR(10),""))
の式を入力して、下方にフィルコピーしています。

※ エラー処理はしていませんので、B列の文字列がテキストに含まれていない場合はエラー表示になります。
「エクセルの関数またはマクロについて」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます!
望み通りの結果が得られました!
本当に助かりました!!

お礼日時:2018/08/07 09:48

>画像内のセルB24・B25・B26の項目は、


初めから入力されているというパターンでも
いいです。

この場合なら、search関数、mid関数、len関数でできます。
    • good
    • 0
この回答へのお礼

ありがとうございます!
参考にさせていただきます!

お礼日時:2018/08/07 09:46

文字列である以上、その値は取得できるのだから可能です



参考関数はif、mid があればできます。場合によってはforなど
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます!
参考にさせていただきます!

お礼日時:2018/08/05 18:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング