- ベストアンサー
特定の列の単語を基準に並べ替え
作業中のエクセルシートでどうしてもわからない作業があります。 A列 B列 C列 a社 株式会社b 1000 b社 c株式会社 2000 c社 株式会社a 3000 このような表でA列の順番でB列を入れ替え、 さらにC列をB列の移動にあわせて並び替えができる方法がありましたら お教えいただきたいと思います。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
D1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",MATCH(SUBSTITUTE(B1,"株式会社","")&"社",A:A,0)) E1セルに次の式を入力してF1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(A1="",COLUMN(A1)>2),"",INDEX($B:$C,MATCH(ROW(A1),$D:$D,0),COLUMN(A1))) その後にE列とF列を選択してコピー、次にB1セルをアクティブセルにして「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 その後にD,E,F列を選択して削除します。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
始めの質問の書き方が判りにくい。 あれでは質問のニーズが捉えにくい。 下記のように書けばニーズが、そういうこともあろうとわかると思う。 こう説明したらどうだろう。 ーー 例データ F,G列(別シートでもよい。後の式は変わるが) F1:G3にデータが 株式会社b 1000 c株式会社 2000 株式会社a 3000 ・・ と在ります。 いまA列にデータを入力し a b c ・・ と作ります。(順はF列の順と無関係) 会社名の一部aなどを頼りに、E,F列のデータを採ってきて A1:C3に a 株式会社a 3000 b 株式会社b 1000 c c株式会社 2000 のように作りたい。 ーーー VLOOKUP関数でワイルドカード*が使えるようなので、 B1に =VLOOKUP("*"&A1&"*",$F$1:$G$3,1,FALSE) 下方向に式を複写する。 C1には =VLOOKUP("*"&B1&"*",$F$1:$G$3,2,FALSE) と入れて下方向に式を複写する。 結果 上記の通り a 株式会社a 3000 b 株式会社b 1000 c c株式会社 2000 ーー =VLOOKUP("*"&A1&"*",$F$1:$G$3,1,FALSE) の1などは =VLOOKUP("*"&A1&"*",$F$1:$G$3,COLUMN()-1,FALSE) のようにするとC列は横方向の式の複写で出来る。 ーーー 上記例は小生のデータについての推測が入っている。 A列とF列の文字列で、上記のように部分一致でよいのかどうか、質問表現があいまいで、説明されていないのでうまく行かない場合も有るかもしれない。一番大切な点なのだが。
お礼
ご回答有難うございます。 質問がわかりにくいとのご指摘、有難うございました。 初心者ゆえ、そもそもどんな説明をすればいいかよくわからず、あいまいな質問文になってしまい申し訳ありません。 ここで教えて頂いた方法では、元のデータの関係上うまくいかないため 他の方法を探したいと思います。
- KURUMITO
- ベストアンサー率42% (1835/4283)
取り敢えずD1セルへは次の式を入力し下方にオートフィルドラッグしてみてください。 =IF(A1="","",MATCH(TRIM(SUBSTITUTE(B1,"株式会社","")),A:A,0))
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。 A列に社がない場合には次のようになりますね。 なお、エラーの表示される原因は文字列の前後にスペースが入っている場合や株式会社と記入されていてもその他に記号などが入っていたりしませんか? 取り敢えずはA列に社の文字がないとのことですので、D1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",MATCH(SUBSTITUTE(B1,"株式会社",""),A:A,0))
お礼
ご回答有難うございます。 スペースや他の記号が入っていたのがうまくいかない原因のようです。 これはもう元のデータがややこしいので、この方法で作業を行うのは諦めた方がよさそうだと思います。 丁寧に解説していただき有難うございました。
- fujillin
- ベストアンサー率61% (1594/2576)
>さらにC列をB列の移動にあわせて並び替えができる方法が >ありましたら A列をキーにして、行単位で並び替えをしたいという意味ですよね? 単純に、昇順・降順とかでよければ、「データ」-「並べ替え」(exel2003)のコマンドで可能です。 昇順・降順ではなく別の指標による場合は、指標となる列を一時的に追加して、その列をキーにして並べ替えればよいでしょう。
補足
ご回答ありがとうございます。 単に並べ替えをする場合なら「並べ替え」で可能なのですが、 A列 B列 C列 a社 株式会社a 3000 b社 株式会社b 1000 c社 c株式会社 2000 のように、A列を指標としてB列がA列の会社名と同じ行に来るように 並べ替えを行いたいのです。 >指標となる列を一時的に追加して、その列をキーにして並べ替えればよいでしょう この方法は具体的にどう操作すればできるか教えていただけますか?
お礼
ご回答ありがとうございます。 試してみたのですが、投稿した例のとおりにやっても#N/Aと表示されてしまい、うまくいきません。 なおA列の「社」は、A列が会社名だという事を示すために便宜上つけたもので、実際のA列の値はa、b、cとなります。 詳しくご回答いただいたのに申し訳ありません。 何かうまくいかない原因がわかりましたら、お教え頂きたいと思います。