- ベストアンサー
関数でセル内の文字を抜き出す方法
質問させていただきます エクセル2003を使っています セルに改行を行いながら入力されています 改行はCtrl+Enterを押して行っています そうすると1つのセルの中で2行、3行と書けるのですが 1行目だけ、2行目だけ、というように関数で抜き出して 違うセルに表示させることは可能でしょうか 宜しくお願いします
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
添付図参照 1.Sheet2 のセル B1 に式 =FIND(CHAR(10),Sheet1!$A1,A1+1) を入力して、此れを右方にズズーッとドラッグ&ペースト なお、A列は空白のままにしておく 2.Sheet2 の1行目を下方にズズーッとドラッグ&ペースト 3.Sheet1 のセル B1 に次の[条件付き書式]を設定 数式が =ISERROR(B1) フォント色 白 4.Sheet1 のセル B1 に次式を入力して、此れを右方にズズーッとドラッグ&ペースト =MID($A1,Sheet2!A1+1,IF(ISERROR(Sheet2!B1-Sheet2!A1-1),99,Sheet2!B1-Sheet2!A1-1)) 5.Sheet1 の1行目を必要なだけ下方にドラッグ&ペースト
その他の回答 (5)
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法はいかがでしょう ◆B1に1行目、C1に2行目、・・・・と表示させます B1=TRIM(MID(SUBSTITUTE($A1,CHAR(10),REPT(" ",100)),COLUMN(A1)*100-99,100)) ★右にコピー ◆2行目は =TRIM(MID(SUBSTITUTE($A1,CHAR(10),REPT(" ",100)),2*100-99,100)) ◆3行目は =TRIM(MID(SUBSTITUTE($A1,CHAR(10),REPT(" ",100)),3*100-99,100)) ◆最終行は =TRIM(RIGHT(SUBSTITUTE($A1,CHAR(10),REPT(" ",100)),100))
- mu2011
- ベストアンサー率38% (1910/4994)
1行目はともかく2行目以降が不可能と言いませんがかなり厳しい数式になります。 1行目はデータ+CHAR(10)だからMID関数で開始位置は1、文字数はCHAR(10)をFIND関数の結果から-1で抽出、 2行目以降は、開始位置、文字数の両者が可変になるので、一案ですがSUBSTITUTE関数でCHAR(10)の2番目と3番目を別文字に変更して抽出しては如何でしょうか。 マクロならば、ユーザ関数定義(=mjGET(セル,順位))すれば、=mjGET(A1,2)で2行目抽出 Function mjGET(rng As Range, num As String) wk = Split(rng, Chr(10)) mjGET = wk(num - 1) End Function
- mikarin2004jp
- ベストアンサー率36% (9/25)
■A1 あいうえお かきくけこ さしすせそ という文字列の場合 ■B1 =SEARCH(CHAR(10),A1,1) で、最初の改行の位置がわかります。 CHAR(10)というのが改行です。 //6 ■C1 =MID(A1,1,B1) //あいうえお ■D1 =MID(A1,B1+1,100) //かきくけこさしすせそ ■E1 =SEARCH(CHAR(10),D1,1) //6 ■F1 =MID(D1,E1+1,100) //さしすせそ ■G1 =MID(A1,B1+1,E1) //かきくけこ あとはコピペで行くと思います。
該当列を選択し、 データ→区切り位置→次へ→「その他」をチェックし横のボックスに 「Ctrl+j」(Ctlrを押しながらj)→次へ→完了、で横に抜き出せます。
- chonami
- ベストアンサー率43% (448/1036)
>Ctrl+Enter 多分Alt+Enterの事だと思うんですが・・・ 改行ごとにセルを分けたいのでしたら、データ→区切り位置→次へ→その他へチェック、横のボックスに「Ctrl+J(Ctrlを押しながらJ)」→次へ→完了 で改行ごとにセルが分かれると思います。 任意の行を抜き出したいのであれば、任意改行はCHAR(10)で表せますので、FIND使ってみるとかSUBSTITUTEでいらない部分を置換するとかですかね。