プロが教えるわが家の防犯対策術!

質問内容:ある文字から改行まで抽出したい、と下方向にオートフィルをする際、参照セルは横方向に伸びている場合のやり方を知りたいです。

Sheet1!A1に、

●国=アメリカ
●都市=ニューヨーク
●収容=2000人

と入力されてます。B1には国が「日本」、C1には「カナダ」等々、同様な内容のセルが並んでいます。

Sheet2!に以下のように抽出したいと思います。
  A    B      C
1 アメリカ ニューヨーク 2000人
2 日本   東京     10000人
3 カナダ  バンクーバー 1500人

が、うまくできません。

まずつまづいたのが、
=MID(Sheet1!A1,SEARCH("●国=",Sheet1!A1)+3,4)
でA1には「アメリカ」と表示されますが他のセルの場合、日本だと2文字、カナダだと3文字と、文字数が一定ではないので改行コードまで抽出すればいいのかな?と思ったのですが、参考になるものが見つかりませんでした。

あともう一点、上記問題解決後、A1からC1まで選択してオートフィルで下方向にドラッグして日本、カナダの行も埋まるようにするしたいのですが可能でしょうか(Sheet1の対象セルがA1、B1…と横方向に伸びていくので。。。)

希望としてはテキストの整形作業や、VBA?を介さずに関数のみで解決したいです。

皆様のアドバイスお待ちしております。
よろしくお願いいたいます。

「ある文字から改行まで抽出+横方向セル参照」の質問画像

A 回答 (6件)

◆一つのセルに、国・都市・収容のデータが入力されているのですね


◆Sheet2のA1
A1=TRIM(MID(SUBSTITUTE(SUBSTITUTE(INDEX(Sheet1!$A$1:$C$1,ROW(A1)),CHAR(10),"="),"=",REPT(" ",100)),COLUMN(A1)*200-100,100))
★右と下にコピー
    • good
    • 1
この回答へのお礼

ありがとうございます!
希望とおりのことができました。

こんなにも早く解決できるとは。。。すごいです。

本当に感謝です!m__m

お礼日時:2012/08/11 16:13

◆MID、SEARCH関数にこだわらなければ、


◆Sheet2の式
A1=SUBSTITUTE(INDEX(Sheet1!$A$1:$C$3,COLUMN(A1),ROW(A1)),CHOOSE(COLUMN(A1),"●国=","●都市=","●収容="),)
★A1の式を右と下にコピー
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

特定の関数には全くこだわりはありません。

お答えいただいた式で試したのですが
A1=
アメリカ
●都市=ニューヨーク
●収容=2000人

となり、右と下方向にコピーしても同様な内容となりうまくいきませんでした。

解決してしまったのですが引き続き検証してみます!

お礼日時:2012/08/11 22:43

Sheet1の1行目:A1から横にスキャン(MAX255個?)し、


Sheet2のA列に、
「ctrl+Enter」(これがCHAR(10)らしい)を「,」に置換した文字列を並べ、後で「,」でセルに分割する。

A1に、

=SUBSTITUTE(OFFSET(Sheet1!$A$1,0,ROW()-1),CHAR(10),",")

以下、コピー
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

試したところ
A1、A2、A3セルそれぞれ、

●国=アメリカ,●都市=ニューヨーク,●収容=2000人

と同じ内容となりました。

解決してしまったので問題点がわかりませんが、
お答えいただき大変ありがとうございました。

お礼日時:2012/08/11 22:59

こんにちは。



 関数で処理するとかなりややこしいです。
  (A1の式)=MID(Sheet1!A1,SEARCH("●国=",Sheet1!A1)+3,SEARCH(CHAR(10),Sheet1!A1)-4)
  (A2の式)=MID(Sheet1!A1,SEARCH("都市=",Sheet1!A1)+3,SEARCH(CHAR(10),Sheet1!A1,SEARCH(CHAR(10),Sheet1!A1)+1)-4-LEN(A$2)-5)
  (A3の式)=MID(Sheet1!A1,SEARCH("収容=",Sheet1!A1)+3,99)

 行と列の入れ替えは表をコピーして「形式を選択して貼り付け」の「行と列を入れ替える」で行ってください。

では。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

試したところ都市にあたる結果セルが「ニューヨーク●」となったり「東京●」となってしまいます。

それ以外の部分は大丈夫でした。

解決してしまったので問題点がわかりませんが、お教えいただいた関数を引き続き検証してみます!

お礼日時:2012/08/11 22:35

>=MID(Sheet1!A1,SEARCH("●国=",Sheet1!A1)+3,4)




関数で処理する場合は、
midで切り出す時の文字数を、findで国名以降の●を見つけた位置基準で決めれば済むと思いますが
find("●",sheet1!a1,2)-3かな、-3は怪しいですが
如何?

>あともう一点、上記問題解決後、A1からC1まで選択してオートフィルで下方向にドラッグして日本、カナダの行も埋まるようにするしたいのですが可能でしょうか(Sheet1の対象セルがA1、B1…と横方向に伸びていくので。。。)

下方にドラッグしたら、A1がA2,3,4,5となっていくのだ駄目です。
sheet1のデータを、行列入れ替えでコピーするか、sheet2で列方向に一旦データを作成した後、行列入れ替えしてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

-3の部分は抽出文字数によっては-4にしたりと調整が必要でした。

FINDの使い方、勉強になりました。

ありがとうございました!

お礼日時:2012/08/11 16:33

まず文字数は、きっちり数える必要は全くありません。


=MID(Sheet1!A1,3,99)


縦と横を入れ替えるには、INDEX関数とかOFFSET関数とかを使います。
シート2のA1に
=MID(INDEX(Sheet1!$A$1:$C$3,COLUMN(A1),ROW(A1)),SEARCH("=",INDEX(Sheet1!$A$1:$C$3,COLUMN(A1),ROW(A1)))+1,99)

#参考
A列の式は3文字目から
B列の式は4文字目から
それぞれ取り出せばよいと判っているのですから、わざわざSEARCH関数など組み込んで無駄に数式を伸ばす必要は全くありません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

>まず文字数は、きっちり数える必要は全くありません。
実はこの項目の文字数も一定ではなく「●国=」だったり「●国名=」となってたりでばらばらなんです。

なのでお教えいただいた関数もやはり自分の思っていたとおりにはなりませんでした。

貴重なお時間をさいてお答えいただいたのに説明不足で申し訳ありません。

お手数をおかけしましたm__m

お礼日時:2012/08/11 16:25

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