- ベストアンサー
エクセルの抽出方法について
エクセル2000を使用してます。 A B 1 5 2 12 3 8 4合計25 というような表計算で合計値の"25"を桁ごとにセルに抽出 (例:C1に拾桁"2"D1に壱桁"5”)したいです。 合計値は1桁~6桁くらいまで固定してません。 C1、D1に入る関数は固定し、合計値が算出されると自動的に 各桁セルへ入るというようにしたいです。 良い方法がありますでしょうか、教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A列に着目する方法と、B列に着目する方法例です。合計行はB列の何行目にあってもかまいません。 <その1>A列に『合計』の文字を入力すれば表示されます。 C1に =IF(ISERROR(MATCH("合計",$A:$A,0)),"",MID(INDIRECT("B"&MATCH("合計",$A:$A,0)),COLUMN()-2,1)) として、D1:H1にコピーします。(合計は最大6桁の場合) 1.MATCHで最終行を求めて、 2.INDIRECTで番地を特定し、 3.MIDを使い、COLUMN()-2で列番号-2に対応する数値を取りだしています。 <その2>A列の最下段の文字を合計欄とする。逐次表示が更新される。 C1に =IF(ISERROR(MATCH("",$A:$A,-1)),"",MID(INDIRECT("B"&MATCH("",$A:$A,-1)),COLUMN()-2,1)) として、D1:H1にコピーします。 <その3>B列の最下段を合計欄とする。逐次表示が更新される。 C1に =IF(ISERROR(MATCH(MAX($B:$B)+1,$B:$B,1)),"",MID(INDIRECT("B"&MATCH(MAX($B:$B)+1,$B:$B,1)),COLUMN()-2,1)) として、D1:H1にコピーします。(合計は最大6桁の場合) 未入力の場合や、合計を計算までの途中も意識しているため、少し長い算式になっています。ご理解を・・・ ○6桁の数値を右の方に詰める場合は =MID(RIGHT("******"&INDIRECT("B"&MATCH("",$A:$A,-1)),6),COLUMN()-2,1) のようにします。 "******"は半角スペース6個です。(回答でスペースが詰められるため*で代用しています)
その他の回答 (2)
- wolv
- ベストアンサー率37% (376/1001)
例えば合計が4桁の場合, C1 D1 E1 F1 千の位 百の位 十の位 一の位 ……(1) 十の位 一の位 空欄 空欄 ……(2) 千の位 一の位 空欄 空欄 ……(3) 1~3のどれにしたいのでしょうか? (No1方の回答は(3)の場合の解法ですね.) 合計の値の桁数が変わる可能性がある,というだけで, 合計値の入るセルは固定されているんですよね? (1)の場合なら, C2「6」 D2「5」 : H2「1」 あるいはD2を「=C2-1」としてH2までコピー C1「=int(mod($B$4,10^C2)/10^(C2-1))」 として,H1までコピー とすると,できると思います.(動作未確認) たとえば,下から3桁め,100の位の計算は, mod($B$4,10^C2)によって合計を1000で割ったあまりを取り出し, /10^(C2-1)によって100でわった上で, intによってその整数部分のみを取っています.
お礼
早々の回答ありがとうございます。(1)の例が非常に参考になりました。
- Naodon1020
- ベストアンサー率25% (243/949)
C1には =+VALUE(LEFT(TEXT($B$4,"@"),1)) D1には =+VALUE(RIGHT(TEXT($B$4,"@"),1)) と入れればいいと思いますが、 合計値が入るセルが固定されていないと難しいですね。 数値を入れるセルを大きめに取っておいて、 C1には =+VALUE(LEFT(TEXT(SUM($B$1:$B$19),"@"),1)) D1には =+VALUE(RIGHT(TEXT(SUM($B$1:$B$19),"@"),1)) とすればどうでしょう。
お礼
早々の回答ありがとうございます。参考になりました。
お礼
早々の回答ありがとうございます。非常に参考になり解決しました。