• 締切済み

エクセル関数で並び変え

以前、2つの列の並び変えを教えていただいたのですが、3列の並び変えに変更することになったので教えてください。 http://jisaku.155cm.com/src/1372225760_41870f790e68dabc8acb8dcb5e71cd4665397864.jpg のような表があったとします。 A列、B列、C列を並べ替えしたものがE列、F列、G列に入っています。 優先順位としてE列、F列、G列の順番で並べ替えたいと思っています。 A列、B列、C列は文字ですが、E列、F列、G列は関数が入力されています。 A列、B列、C列の文字を変えた時に自動で並び変えてE列、F列、G列に反映させるにはどのように関数を組めばいいのでしょうか?

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答No2です。 作業列のD2セルには次の式を入力して下方にドラッグコピーすればよいでしょう。 =IF(A2="","",CODE(PHONETIC(A2))*1000000000+CODE(PHONETIC(B2))*100000+CODE(PHONETIC(C2)))

touch_ken
質問者

補足

ごめんなさい。ちょっと説明を間違えてしまいました。 A列、B列、C列は考えないで、関数で表示されているE列、F列、G列を並び変えて H列、I列、J列に表示させるにはどうなるのでしょうか? 実際はL列、M列、N列、O列、P列(すべて関数)を優先順位M列、N列、O列の順番で並び変えた ものを、Q列、R列、S列、T列、U列に表示させたいです。 よろしくお願いします。 =IF(A2="","",CODE(PHONETIC(A2))*1000000000+CODE(PHONETIC(B2))*100000+CODE(PHONETIC(C2)))がVALUEになってしまう原因が文字ではなく関数表記になっていることでした。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

これなら何とか……。 作業列を先頭に2つ挿入します(A:B列)。 A2に↓ =COUNTA(C:C)-COUNTIF(B:B,">"&B2) B2に↓ =C2&"_"&D2&"_"&E2&"_"&ROW() と、入れてA2:B2を下方向にコピー 次に、G2に↓ =IF($A2<1,"",VLOOKUP(ROW()-1,$A:$E,COLUMN()-4,FALSE)) と、入れて、I列までと下方向にコピーします。 A:B列は非表示にしておきましょう。

touch_ken
質問者

補足

レスありがとうございます。 ここに掲載したものは実際のものとは違うので自分なりにアレンジしながらやっているのですが うまくいきません。 実際はL列、M列、N列、O列、P列に並び変えたい表が関数で表記してあります。 また、A列、B列を開けると関数があかしくなってしまいエラーになってしまうので、 Q列、R列に=COUNTA(C:C)-COUNTIF(B:B,">"&B2)と=C2&"_"&D2&"_"&E2&"_"&ROW() を設けました。ここまではなんとかなったのですが、S列に=IF($A2<1,"",VLOOKUP(ROW()-1,$A:$E,COLUMN()-4,FALSE))をアレンジしてみたのですがうまくいきません。 L列からP列の中から優先順位はM、N、Oの順番です。 よろしくお願いします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

おはようございます。 作業列を使って対応します。 例えばD2セルに次の式を入力して下方にドラッグコピーします。 =IF(A2="","",CODE(MID(A2,4,10))*1000000000+CODE(PHONETIC(B2))*100000+CODE(PHONETIC(C2))) なお、ここではA列においては必ずテスト1、テスト2、テスト3、テスト10といったようにテストの後に数字が入力された文字列としています。 E2セルには次の式を入力してF2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTA($A$2:$A$10000),"",INDEX(A:A,MATCH(SMALL($D:$D,ROW(A1)),$D:$D,0)))

touch_ken
質問者

補足

レスありがとうございます。 テスト1、テスト2とか書いてしまいましたが、実際は普通の文字列で数字は入っていません。 なので =IF(A2="","",CODE(MID(A2,4,10))*1000000000+CODE(PHONETIC(B2))*100000+CODE(PHONETIC(C2))) の関数を実際に使ってみたのですが、VALUEとなってしまいました。 どのように変更すればいいのでしょうか? よろしくお願いいたします。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

マクロでないと無理でしょう。

関連するQ&A