アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelのセルの中で、改行されている文字列の複数行目の文字列を別のセルに移す関数はありますか?

A 回答 (7件)

No.1です。



> 2行目以降で、改行毎に横のセルに並べたいと思っておりました。

 それならセルの位置を決める変数をもち、改行コードを見つけるたびにこの変数が指す先に文字列をコピーして変数をカウントアップする、、、という処理を文字列全体の最後尾まで処理を繰り返せばよいです。
 ときうことで「関数を考える」のではなく「処置手順を(日本語で)考える」ことが大切です。
 Excelが提供する各種関数にまだ詳しくないうちは、無理に難しい関数を使うのではなく、ちょっと泥臭くても思いつく素直な考え方の「処理手順」を実装することを優先されるとよいと思います。
 で。後々、便利ご自身が考えたそうなExcel関数を知った際に「これを使うとこういう処理手順となりもっと単純になるな」と学ぶことが大切と考えます。

参考まで。
    • good
    • 1
この回答へのお礼

たびたびのご回答ありがとうございます。
そうですね、皆さんの回答を元にさらに調べたところ、わたしのやりたかった事が関数以外で解決することがわかりました。

Excelの処理でわからないことは関数で解決!と安直に考えずに、もっと柔軟に考えることが必要ですね。とても参考になりました、ありがとうございます。

お礼日時:2016/07/09 11:03

数式でもなくマクロでもなく、となると区切り位置機能でもできます。



データタブ→区切り位置→○カンマやタブなどの区切り文字によって~を選択
→次へ→区切り文字の「その他」にチェックを入れ横のボックス内で「Ctrl+J」を押す(見た目は何も表示されない)
→完了

一旦質問したのですから、どのような方法で解決したか回答者に報告するのが礼儀ですし、タイトルなどで検索した方が「で、数式以外ってどんな方法!?」となることもあるでしょうからきちんと書いていただく方がいいかと思います。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
礼儀を知らずご迷惑をお掛けして大変申し訳ございませんでした。
この質問システムを始めて使用したので、要領をわからずに使用していました。慣れないシステムは、他人様に迷惑をお掛けすることになるので、わたしのような無礼者は決して利用するべきではありませんでした。申し訳ございませんでした。

しかし、chonami様のお陰でひとつ賢くなれたと思います、大変感謝しております。今後も礼儀をわきまえた立派な人間になれるよう精進致します。

わたしのやりたかったことは、区切り位置の使用で解決いたしました。
この度は大変お世話になりました。
どうもありがとうございます。

お礼日時:2016/07/14 19:02

>関数以外で解決することがわかりました。



配列にすればよいのでは?
全部でも、一部でも取り出すことは可能です。
Test2は、ホームタブ-編集-文字の割り付けに似てはいますが、機能的には違います。以下は、A1 にデータがあった場合とします。

Sub Test1()
Dim arBuf, i As Long
arBuf = Split(Range("A1").Value, vbLf)
i = UBound(arBuf)
Range("B1").Resize(, i + 1).Value = arBuf  'B1から右方向へ
End Sub

Sub Test2()
Dim arBuf, i As Long
arBuf = Split(Range("A1").Value, vbLf)
i = UBound(arBuf)
Range("B1").Resize(i + 1).Value = _
   WorksheetFunction.Transpose(arBuf)   'B1から下方向へ
End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。配列ですか、なにやら私には複雑な暗号のように見えてしまいます…。
わざわざありがとうございます。

お礼日時:2016/07/14 18:53

チョイと気になったもので・・・


「急いでいます!!」なら尚更のことですが、別の「Excel(エクセル)」というカテゴリの専用部屋で質問されることをお奨めします。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。急いでいて、かつ、教えて!gooを使用するのが今回が初めてだったので要領を理解しておりませんでした。次回からは注意致します。

お礼日時:2016/07/09 01:05

セル A1 内の文字列が7、8行毎に改行されている場合しかためしていないけど、次式が貴方のお眼鏡に適うかどうか試してみてください。


=TRIM(MID(SUBSTITUTE($A1,CHAR(10),REPT(" ",500)),1+(COLUMN(A1)-1)*500,250))
セル B1 に上式を入力して、此れを右方にズズーッとオートフィル
「エクセルでセル内改行の複数行目だけ抜き出」の回答画像3
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。複雑な関数ですね、試してみます。
それにしても、こんな複雑な関数が思い付いてしまうmike_gさん、尊敬します。

お礼日時:2016/07/09 01:08

対象セルが A1 でしたら


「=IF(ISERROR(SEARCH(CHAR(10),A1)),"",MID(A1,SEARCH(CHAR(10),A1)+1,256))」
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。参考になりました。もっと関数を勉強しようと思います。

お礼日時:2016/07/09 01:10

> excelのセルの中で、改行されている文字列の複数行目の文字列



 というのは具体的に何行目を取り出したいのでしょう?
 例えば3行目だとすると、対象セルの内容に対し。。。

(1) 文字列検索で改行コードを検索する。
(2) 改行コードが無かったらエラー?(セル内に1行しかない)
(3) 改行コードがあったらその次の文字以降を対象に再度改行コードを検索
(4) 改行コードが無かったらエラー?(セル内に2行しかない)
(5) 改行コードがあったらその次の文字以降を対象に再度改行コードを検索
(6) 改行コードが無かったら(5)の検索開始位置から行末までの文字列を移動先のセルへコピーする(または移動する)
(7) 改行コードがあったら(5)の検索開始位置から改行コードの前の文字までの文字列を移動先のセルへコピーする(または移動する)

 という感じでしょう。
 改行検索はInStr関数()で出来ます。

参考まで。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。質問のしかたが悪くて申し訳ありません。
2行目以降で、改行毎に横のセルに並べたいと思っておりました。
試してみます、ありがとうございます。

お礼日時:2016/07/09 01:11

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

このQ&Aを見た人はこんなQ&Aも見ています