柔軟に働き方を選ぶ時代に必要なこと >>

初めて質問します。

添付画像のようにセル内の改行された文字列を学校名1、2、3・・・といったように分割をするにはどうすればいいのでしょうか。
ちなみにデータには改行されていない(学校名が一つだけ)のデータもあります。

よろしくお願い致します。

「セル内の改行された文字列を分割」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (5件)

#1です。

Excelの機能「区切り位置」でできました。

EXCELのバージョンは何ですか?
2003までなら、メニューの[データ]>[区切り位置]
2007以降なら[データ]>[データツール]グループの[区切り位置]

バージョンに合わせて読み替えてください。
セルB2~セルF5には何も無い状態から始めるものとしますよ。

1)セルA2~A5を選択して「コピー」
2)セルB2に「貼り付け」
3)そのままの状態で、上記の方法で[区切り位置]を起動
4)「カンマやタブなどの・・(後略)」を選んだ状態で「次へ」
5)「区切り文字」の「その他」にチェック(レ点)付ける
6)「その他」の右隣のボックスをクリックしてCtrl+Jキー押下
  (何も入力されないように見えるが、下にある「データのプレビュー」が変化する)
7)「完了」ボタンをクリック
    • good
    • 3
この回答へのお礼

ありがとうございます。
この方法でうまくできました。

お礼日時:2011/05/31 22:50

B2セルに次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。



=TRIM(MID(SUBSTITUTE($A1,CHAR(10),REPT(" ",100)),(COLUMN(A1)-1)*100+1,100))
    • good
    • 1

こんばんは!


VBAでの一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
とりあえず1セルに10行あっても対応できるようにしてみました。

Sub test() 'この行から
Columns(1).Insert
Dim i, j As Long
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(i, 1) = Cells(i, 2)
For j = 3 To 12
If WorksheetFunction.Find(Chr(10), Cells(i, 1)) Then
On Error Resume Next
With Cells(i, j)
.Value = Mid(Cells(i, 1), 1, WorksheetFunction.Find(Chr(10), Cells(i, 1)))
.WrapText = False
End With
With Cells(i, 1)
.Value = Replace(Cells(i, 1), Cells(i, j), "")
.WrapText = True
End With
End If
Next j
Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = Cells(i, 1)
Next i
Columns(1).Delete
End Sub 'この行まで

こんな感じではどうでしょうか?m(__)m
    • good
    • 0

 関数を使用して行う場合には、次の様な関数をB2セルに入力してから、B2セルをコピーして、B2~F5の範囲に貼り付けて下さい。

(それ以上の範囲に貼り付けても正常に動作します)

=IF(OR($A2="",COLUMNS($B:B)>LEN($A2)-LEN(SUBSTITUTE($A2,CHAR(10),))+1),"",REPLACE(REPLACE($A2,FIND("゛",SUBSTITUTE($A2&CHAR(10),CHAR(10),"゛",COLUMNS($B:B))),LEN($A2),),1,FIND("゛",SUBSTITUTE(CHAR(10)&$A2,CHAR(10),"゛",COLUMNS($B:B)))-1,))
    • good
    • 1
この回答へのお礼

ありがとうございます。
今後の参考とさせていただきます。

お礼日時:2011/05/31 22:51

今、EXCELを動かせる環境にないので未検証ですが。



セル内データを「ある文字を区切り記号と解釈してセルを分割する」機能があります。
データ>区切り位置です。区切り文字を指定すると、右方向に分割してくれます。
(そのためには、右側にデータがあってはいけない)

この機能で、区切り文字「その他」で任意の文字を指定できます。

セル内改行文字は Ctrl+Jキー押下で指定できるはず。

未検証ですが、シートをコピーするなどした上でお試しください。

> ちなみにデータには改行されていない(学校名が一つだけ)のデータもあります。
この場合は、そのまま残ります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルのセルの中で改行して入力したものを分割したいんです。

エクセルの入力編集について質問です。

セルに改行(Alt&Enter)をして下記のように入力を行ったのですが、

 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 |  |内容2 |
 L__⊥____」

データ処理に不便なために同一セル内にある「内容1」と「内容2」を下記のように別々のセルにしたいと思います。

 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 ―――――――――
 |  |内容2 |
 L__⊥____」

もしくは、
 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 ―――――――――
 |番号|内容2 |
 L__⊥____」

手作業にてコピーアンドペーストと行の挿入を繰り返しを行うのは、非常に時間がかかるかと思います。

そこで、なにか一括で処理できる方法はありませんでしょうか?お願いします。
また、一括ではなくても入力が簡単になる方法はありませんか?

最後になりますが、Excel 2003を利用しています。

Aベストアンサー

    A      B
1  番号A  内容A
         内容B
2  番号B  内容C
         内容D
3  番号C  内容E
         内容F

のように並んでいる場合ですが、

1.A1:B3を選択してコピーし、Wordに形式選択(HTMLかリッチテキスト)で貼り付け。
2.Wordに貼り付けた全体を選択してコピーし、Excelの別シートに貼り付け。
3.番号の列が結合された状態なので、それらのセルをまとめて選択して結合解除。

ではいかがでしょうか。

Qセル内改行位置でセルを分割する方法

はじめまして よろしくお願いします。

エクセルで、ひとつのセル内に複数行に分けて入力してあるものを
行でそれぞれひとつのセルに分け直したい場合、

例えばA1のセルに
 1234
 aabbcc
A2のセルに
 12345
 aaabbbccc
 123
と入力してあるものを

A1→1234
A2→aabbcc
A3→12345
A4→aaabbbccc
A5→123
としたいとき、何かいい方法ありますか。

Aベストアンサー

1.A1のセルとA2のセルを選択してコピー
2.メモ帳などのエディタへ貼り付け
3."(ダブルコーテーション)がくっついているはずなので、置換えなどで"を削除する
4.編集したものを全部選択してコピー
5.エクセルへ貼り付け

これでOK。ちょっと手間ですけど...

Qエクセル。複数行あるセルの分割はできますか?

こんにちは。
教えてください!
たとえば、B1のセルに次のように3行でデータが入力されていたとします。
B1「日本
  アメリカ
  イギリス」
これをそれぞれ分割して次のようにできる関数はありますか?
B1「日本」
B2「アメリカ」
B3「イギリス」

それが簡単にできると仕事がスムーズになるので助かります。
もし次のことも解決できる方法があれば教えてもらえませんか?
A1「8月30日」
B1「日本、アメリカ、イギリス(3行で入ってます)
C1「出発」
というようなデータがあって、B1をそれぞれの国で分割して、A1とC1のデータをアメリカが入っている行、イギリスが入っている行に自動的にコピーされる。
これは関数ではなくて、マクロになるのかな?とも思うのですが、「分割が行われた行までコピー」というやり方がさっぱりわからないでいます。(その前に分割する方法が分からないんですけど・・・)
ちなみに、データがずらーっと並んでいるリストの一部にあるB1のようなデータを整理したいというのが、目的になります。

どうぞ宜しくお願い致します。

こんにちは。
教えてください!
たとえば、B1のセルに次のように3行でデータが入力されていたとします。
B1「日本
  アメリカ
  イギリス」
これをそれぞれ分割して次のようにできる関数はありますか?
B1「日本」
B2「アメリカ」
B3「イギリス」

それが簡単にできると仕事がスムーズになるので助かります。
もし次のことも解決できる方法があれば教えてもらえませんか?
A1「8月30日」
B1「日本、アメリカ、イギリス(3行で入ってます)
C1「出発」
というようなデータがあって、B1をそれぞれ...続きを読む

Aベストアンサー

こんにちは。

よくよくテストして下さい。

Sub Sample()

  Dim nLastRow As Long
  Dim i    As Long
  Dim j    As Long
  Dim s    As String
  Dim v

  nLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  
  Application.ScreenUpdating = False
  For i = nLastRow To 2 Step -1 ' // 2行目まで
    s = Cells(i, "B").Text
    If Len(s) > 0 Then
      v = Split(s, vbLf)  ' // セル内改行で配列化
      If UBound(v) > 0 Then
        Rows(i + 1).Resize(UBound(v)).Insert
        For j = 0 To UBound(v)
          Cells(i + j, "A").Value = Cells(i, "A").Value
          Cells(i + j, "B").Value = v(j)
          Cells(i + j, "C").Value = Cells(i, "C").Value
        Next
      End If
    End If
  Next

End Sub

こんにちは。

よくよくテストして下さい。

Sub Sample()

  Dim nLastRow As Long
  Dim i    As Long
  Dim j    As Long
  Dim s    As String
  Dim v

  nLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  
  Application.ScreenUpdating = False
  For i = nLastRow To 2 Step -1 ' // 2行目まで
    s = Cells(i, "B").Text
    If Len(s) > 0 Then
      v = Split(s, vbLf)  ' // セル内改行で配列化
      If UBound(v) > 0...続きを読む

Qexcelで1つのセルだけを分割する方法

excelで、行全体または列全体でなく、1つのセルだけを縦または横に分割する方法はありますか?

ご存知の方、是非お教えください。

Aベストアンサー

エクセルでセルは最小単位です、分割は出来ません。
むしろ逆に考えて、不要な行はセルを結合して1列的に見せてはどうでしょう。
見た目でやるなら(多分したいことを想像して)
桁合わせだけの問題なんですが。
(1)文字列のケースとする。数値や半角が混じると
うまくいかないかも。
(2)例えばD1セルに半角スペース10個を入れる。
(3)A列はフォントをPのつくものは避ける。
(4)例えばB列、c列に文字列データが入っているとする。
(5)A1セルに
=MIDB($D$1,1,10-LENB(B1))&B1&MIDB($D$1,1,10-LENB(C1))&C1
といれて下行に複写する。LENBをあえて使う。
(データ例)
    (A列)       (B列)  (C列)
大阪市 西園寺大阪市西園寺
長岡京市 熊山長岡京市熊山
津市 佐藤津市佐藤
(6)真中に縦に図形の直線を貼りつける。

QExcel マクロ VBA セル内で改行された文字列の分割

はじめまして。
ExcelのVBA初心者で、ちょっと困っています。

(例)
(1) セルA1に以下のような改行された文字列が入力されています。
【セルA1】
a
aa
aaa
b
bb
bbb

(2) セルA1内の文字列を3行毎に分割し、セルA2以降に表示させたい。
【セルA2】
a
aa
aaa
【セルA3】
b
bb
bbb

※ 今回の例ではセルA1に6行しかありませんが、実際に行数は決まっていません。

そこで以下のようなVBAを見よう見まねで作り、1行毎の分割はうまくいったのですが、『3行毎に分割』ができません。

Sub 分割()
Dim A, B, C
A = Split(Range("A1"), Chr(10))
B = 0
For Each C In A
B = B + 1
Range("A2").Offset(B - 1, 0).Value = C
Next
End Sub

ご教授いただけると助かります。
よろしくお願い致します。

Aベストアンサー

Sub 分割()
Dim A, B, C, E
A = Split(Range("A1"), Chr(10))
B = 1
E = 1
For Each C In A
If E = 1 Then
Range("A2").Offset(B - 1, 0).Value = C
Else
Range("A2").Offset(B - 1, 0).Value = _
Range("A2").Offset(B - 1, 0).Value & Chr(10) & C
End If
If E = 3 Then
B = B + 1
E = 0
End If
E = E + 1
Next
End Sub

でどうでしょう。

Qセル内で改行された文字列を1行ずつ他のセルに移す

excelで、こんなことできますか?
book1で、セル内に下のような改行した文字列があり、それを入力したら、
book2に、文字列を1行ずつ他のセルに取り出したいのですが…できますか?

book1 (セルは折り返して全体を表示する) book2 (仕上げの画面)
A         A
あいうえお                    1 あいうえお
1 かきくけこ                    2 かきくけこ
さしすせそ                    3 さしすせそ
→ 4 たちつてと
2 たちつてと                    5 なにぬねの
なにぬねの                     6 はひふえほ

3 はひふへほ

教えていただけると助かります。(ただしマクロはよくわからないのですが…)

excelで、こんなことできますか?
book1で、セル内に下のような改行した文字列があり、それを入力したら、
book2に、文字列を1行ずつ他のセルに取り出したいのですが…できますか?

book1 (セルは折り返して全体を表示する) book2 (仕上げの画面)
A         A
あいうえお                    1 あいうえお
1 かきくけこ                    2 かきくけこ
さしすせそ...続きを読む

Aベストアンサー

シート1のA1セルに入力された文字が有るとしたらシート2のA1セルには次の式を入力して下方にドラッグコピーします。

=TRIM(MID(SUBSTITUTE(Sheet1!$A$1,CHAR(10),REPT(" ",100)),(ROW(A1)-1)*100+1,50))

横方向の列に表示させるとしたらシート2のA1セルには次の式を入力して右横方向にドラッグコピーします。

=TRIM(MID(SUBSTITUTE(Sheet1!$A1,CHAR(10),REPT(" ",100)),(COLUMN(A1)-1)*100+1,50))

その場合にはシート1のA列に同様の文字の入力が複数行あった場合でも、式を下方にもドラッグコピーすることで良いでしょう。

Qエクセルでセル内改行の1行目だけ抜き出す関数は?

エクセルでセル内で改行している文字列データがあります。
このセルの1行目だけを抜き出す関数はありますか?

Aベストアンサー

=LEFT(A1,FIND("
",A1)-1)
でできると思う。関数自体も2行になるね。これをコピーしてセルに貼り付けてもできると思うよ。
(実際には改行コードを検索してるわけですね。)

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルのデータ、1行を複数行に展開し直したいです。

うまく説明できませんが、筆まめの住所録データをCSV形式にてエクセルに落とし込みました。

その状態では、宛名~備考までの項目が約20、A2~S2に1行に
展開されています。

住所録を社内で回覧できる状態にしたいのですが、今のままでは
項目が多すぎるため、1件について3行程度に項目を折りたたんで
展開したいです。

 宛名|敬称|担当者|郵便番号|住所|番地|ビル名|備考
 
 ↓
 
 宛名 | 敬称 |担当者
 郵便番号 | 住所 | 番地 | ビル名
 備考

 という風に。

別シートに「=sheet1!A2」「=sheet1!B2」というように配置し、
以下ドラックすると、データが2件飛ばしになってしまいます。

簡単に展開しなおせる方法を教えて下さい!!

ずっと調べているのですが、一向に分からずに煮詰まってしまいました。

Aベストアンサー

住所録データ1件がA列~S列まであるんですよね。
質問には何も書いていませんが、本当は何件もデータがあって、別シートに1件につき3行で表示したい。と、言うことであっていますか?
例では8項目ですが、本来は19項目あると……。
質問を見ると住所録データが1件しかないような記述でしたので、思い違いでしたらごめんなさい。

とりあえず、7項目、7項目、5項目と別けると仮定します。
別シートのA2に以下を入れ、G4までコピーし、F4とG4の式を削除します。
=INDEX(Sheet1!$A:$S,INT((ROW()-2)/3)+2,COLUMN()+MOD(ROW()-2,3)*7)

次にA2からG4までを選択して下にずらずらっとコピーします。
表示する項目を変えるときは COLUMN()+MOD(ROW()-2,3)*7 が項目になりますので、1~19までの数字を入れてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報