- 締切済み
セルA列とB列に社員a~社員jと連続的に入力されています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列とB列に氏名が入力されておりA列の氏名とB列の氏名を左の表にランダムに並べるにはマクロを使うというより次のように作業列を作って対応するのが適当なように思います。 例えばAA1セルに =RAND() と入力してAU1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 次にそれらの表を利用して氏名を左右に分けて表示させるのですが、D1セルには次の式を入力してX1セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR($A1="",COLUMN(A1)=11,COLUMN(A1)>21),"",IF(AND(COLUMN(A1)<11,AA1=MAX($AA1:$AJ1)),$A1,IF(AND(COLUMN(A1)<22,AA1=MAX($AL1:$AU1)),$B1,""))) これでお望みの表が出来上がりますね。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 画像の文字がはっきり読み取れないのですが・・・ 仮に「社員e」の場合は表示したいセルのその行で、左から5列目に! 「社員h」の場合は同様にその行の左から8列目に表示すれば良いという解釈での方法になります。 一例です。 ↓の画像(画像が小さくて見えにくいかもしれません)でSheet2のA1~A26セルに a b c ・・・とzまで入力しておきます。 Sheet1の作業列B2セルに =IF(A2="","",MATCH(RIGHT(A2,1),Sheet2!$A$1:$A$26,0)) という数式を入れオートフィルで下へコピーします。 この数値が表示させたい列番号になりますので、 D2セルから表示させるとして、 D2セルに =IF(ISERROR(INDEX($A$2:$A$19,ROW(A1),MATCH(COLUMN(A1),$B2,0))),"",INDEX($A$2:$A$19,ROW(A1),MATCH(COLUMN(A1),$B2,0))) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 尚、データ量によって数式内の範囲指定の領域はアレンジしてみてください。 以上、参考になれば良いのですが 的外れなら読み流してくださいね。m(__)m