[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一つのセル内に複数行で書かれている文章を1行ずつに分ける』(超EXCEL初心者)
C2の検索文字の欄は複数行ある文章で、 その行の中で一番大きい値を合計数に出す。
※文字間を1として足します。
−−−−−−−− Ms.Rin〜♪♪さんからの回答です。[[20061229142634]]
A B C D E [1] 文字 数値 検索文字 作業列 合計 [2] A 1 ABCDEFGHIJK 12 66 ←C3セルの1行目 LMNO 17 54←C3セルの2行目 PQRSTUVWXYZ #DIV/0! 231←C3セルの3行目 [3] B 2 [4] C 3 [5] D 4 [6] E 5 [7] F 6 [8] G 7 [9] H 8 [10] I 9 [11] J 10 [12] K 11 [13] L 12 [14] M 13 [15] N 14 [16] O 15 [17] P 16 [18] Q 17 [19] R 18 [20] S 19 [21] T 20 [22] U 21 [23] V 22 [24] W 23 [25] X 24 [26] Y 25 [27] Z 26
D列に作業列を作ります
D2セルへ
=1/LARGE(INDEX((MID($D$2,ROW($1:$100),1)=CHAR(10))/ROW($1:$100),),ROW(A1)) 下へコピーします。
E2セルへ =SUMPRODUCT(EXACT(MID(LEFT(C2,D2),COLUMN(1:1),1),A2:A27)*B2:B27)+D2-2 E3セルへ =SUMPRODUCT(EXACT(MID(LEFT(MID(C2,D2+1,D3-D2-1),D2),COLUMN(1:1),1),A2:A27) *B2:B27)+D3-D2-2 E4セルへ =SUMPRODUCT(EXACT(MID(MID(C2,D3+1,LEN(C2)-D3),COLUMN(1:1),1),A2:A27)*B2:B27) +LEN(C2)-D3-1 −−−−−−
早速泣きついてしまいますが・・・
=1/LARGE(INDEX((MID($C$2,ROW($1:$100),1)=CHAR(10))/ROW($1:$100),),ROW(A1))
上の式でわかったのは MID($C$2,ROW($1:$100),1)=CHAR(10) の部分だけでした。 これを見た率直な感想は『なんだかすごすぎる!』です。
何がどうしてこうなるのかまったくわかりません。 サルにもわかる解説をお願いしたいです・・・
(超EXCEL初心者)
こんにちは〜♪
>何がどうしてこうなるのかまったくわかりません。 >サルにもわかる解説をお願いしたいです・・・
こんな表を例にしてみました。
A B C D E F [1] A 2 FALSE 0 0.5 2 [2] ・ 5 TRUE 0.5 0.2 5 [3] B #DIV/0! FALSE 0 0 #DIV/0! [4] C FALSE 0 0 #DIV/0! [5] ・ TRUE 0.2 0 #DIV/0! [6] D FALSE 0 0 #DIV/0! [7] E FALSE 0 0 #DIV/0! [8] FALSE 0 0 #DIV/0! [9] FALSE 0 0 #DIV/0! [10] FALSE 0 0 #DIV/0!
★この表のA列は たとえば、A1セルに、 ____ A BC DE ---- セル内改行を含む、3行をA列に(A1〜A7)1字ずつ配置した表です。 実際に、入力してみてください。
A2とA5は、改行だけしたセルです。 目印で、・ にしてあります。
この2つは、何も入力せずセルを編集状態にして ALT+ENTER で改行だけしてください。 これで =COUNTA(A1:A10) で、7 と数えられます。
★ここから本題になります。。。
B1セルへ =1/LARGE(INDEX(($A$1:$A$10=CHAR(10))/ROW($1:$10),),ROW(A1))
下にコピーで、表のように 2 と 5 が表示されます。 見れば、お分かりの様に、改行したセルの行番号が出てますね。
★この処理は、良くQ&Aの回答でも 使われてます。。。 (条件に会った、データを詰めて表示させる)等の質問の回答で。。。
他にも幾つかありますが。。 ポピュラーなのが、配列数式で =SMALL(IF($A$1:$A$10=CHAR(10),ROW($A$1:$A$10),""),ROW(A1))
ctrl+Shift+Enter この式を下にコピーで、同じ結果なります。。。
私の式は、これの変形になります。 ★特に配列数数式は、式を分解するとわかりやすくなります。 まず、 C1セルへ =A1=CHAR(10) C10までコピー。
D1セルへ =C1/ROW(A1) D10までコピー。
E1セルへ =LARGE($D$1:$D$10,ROW(A1)) E10までコピー。
F1セルへ =1/E1 F10までコピー。
この結果で、たぶんお分かりになると思います。
★式の中で、INDEXを使っていますが、 実際は、無くても
=1/LARGE(($A$1:$A$10=CHAR(10))/ROW($1:$10),ROW(A1)) ctrl+Shift+Enter
で、いいのですが、INDEX等の配列関数を入れると ctrl+Shift+Enter を省けるので使っています。
こんなへたな説明でゴメンナサイ!!
>上の式でわかったのは > MID($C$2,ROW($1:$100),1)=CHAR(10) > の部分だけでした。
を、理解されている(超EXCEL初心者)さん。。
でしたら、お分かりになると思います。。。
。。。Ms.Rinでした〜♪♪
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.