- ベストアンサー
エクセル カウントの逆?
A 3 0 B 1 1 C 2 1 D 0 3 (実際には下・右方向にまだ数字があります) とあった場合、その下に A B A C A D B D C D C という風に書き出す方法はありませんでしょうか? よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
初めまして。Yochioと申します。 前提として、以下の条件を付けさせて頂きます。 ・表の行数、列数の少なくともどちらか一方は固定(もう片方は可変でも固定でもよし) ・間に計算用のセルが入っていてもよい(不要なら隠せばいい) 以上の条件を踏まえた上であれば、関数のみで再現できました。 表記上、やや省略しました。必要ならマウス等で広げてください。 || A | B | C ==||========= 1 || A | 3 | 0 2 || B | 1 | 1 3 || C | 2 | 1 の場合を考えます。(左端の123は行、上端のABCは列だとお考えください) 逆カウントを行いたい表と同じサイズの表を下に作る要領で、(念のため一行あけて) 5 || | ASC(REPT($A1,B1)) | ASC(REPT($A1,C1)) 6 || | ASC(REPT($A1,B2)) | ASC(REPT($A1,C2)) 7 || | ASC(REPT($A1,B3)) | ASC(REPT($A1,C3)) B5のセルをしっかり入力すれば後はマウスでぐりっとできます。 そうすると、結果として以下のようになるはずです。 5 || | AAA | 6 || | B | B 7 || | CC | C これを元の表と同じサイズ作成することで元データから逆カウント自体が完了しました。 あとはこれを各行に割り振る必要がありますね。 そこで、いったんこれらの文字列を連結します。(また念のため一行あけます) 9 || ROW() | CONCATENATE(B5,B6,B7) | CONCATENATE(C5,C6,C7) ここで注意すべきはA9です。とりあえずこう入力しておいてください。 理由は後で示します。 あとはB9のみ入力してマウスで横にぐりっと。 ここでは列数を併せる必要はありますが行は1行のみでいいです。 そうすると、結果として以下のようになるはずです。 9 || 9 | AAABCC | BC ここまできたら後はもうすぐ。 11 || | MID(B$9,ROW()-$A$9,1) | MID(C$9,ROW()-$A$9,1) 12 || | MID(B$9,ROW()-$A$9,1) | MID(C$9,ROW()-$A$9,1) 13 || | MID(B$9,ROW()-$A$9,1) | MID(C$9,ROW()-$A$9,1) 14 || | MID(B$9,ROW()-$A$9,1) | MID(C$9,ROW()-$A$9,1) 15 || | MID(B$9,ROW()-$A$9,1) | MID(C$9,ROW()-$A$9,1) とやるだけ。またもB11のみ入力してマウスでぐりっと。 ここでさっきのA9を使います。 何かというと、MID関数で文字列を取得する際の文字列の位置をROW関数を使って取得しようとしているので、 ROW関数のカウントをクリアする必要があるのです。 他にもやり方はあります(A列に数字を入れるとか)が、この方が応用が利くかなと思いました。 もっと楽な方法があればどなたかに教えて頂きたく思います。 さてさて、そうすると思い通りの結果になりませんでしょうか? 11 || | A | B 12 || | A | C 13 || | A | 14 || | B | 15 || | C | あとは不要な行を隠すだけ。 なお、行数が可変で列数が不変な場合、単純に今までの手順を行列逆にして実施すればいいはずです(未検証)。 こんな感じでどうでしょう?
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
これを関数でやるのは、ちと難しい。 (例データ)A2:B6に下記データとする。 A1の行はデータは入れないこと。 A列 B列 C列 0 a 3 3 b 1 4 c 2 6 d 0 6 e 4 10 (関数式1)作業列として1列C列を使う。 C1に0をいれる。 C2に=SUM($B$2:B2)といれ、最下行B6まで複写する。これで B列上からの累計が出る。上記の通り。 (関数式2) 文字列を出したい列(仮にE列とする)の一番上のE1に =INDEX($A$2:$A$6,MATCH(ROW()-1,$C$1:$C$6,1)) といれて、C列の最大値数の行まで、式を複写する。 $A$6の6は最下行に修正すること。 (結果) a a a b c c e e e e
お礼
大変遅くなりました。 ありがとうございます。 エクセルの基本を勉強しなきゃと思い知らされました。
=REPT(Sheet1!$A1,B2) 縦横方向にオートフィルコピー 一列分をコピー →右クリック→[形式を選択して貼り付け] →[値]にチェック入れてOK 上記の列の幅を一文字分に調整して [編集]→[フィル]→[文字の割付] これを全ての列で行う。面倒なら 作業マクロでどうぞ。
お礼
大変遅くなりました。 ありがとうございます。
お礼
大変遅くなりました。 ありがとうございます。 丁寧に答えて頂きまして助かりました。 うまくいきました。 感激です。