• ベストアンサー

エクセルの抽出方法について

エクセル2000を使用してます。  A  B 1   5 2  12  3   8 4合計25  というような表計算で合計値の"25"を桁ごとにセルに抽出       (例:C1に拾桁"2"D1に壱桁"5”)したいです。        合計値は1桁~6桁くらいまで固定してません。        C1、D1に入る関数は固定し、合計値が算出されると自動的に        各桁セルへ入るというようにしたいです。 良い方法がありますでしょうか、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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個です。(回答でスペースが詰められるため*で代用しています)

momo888
質問者

お礼

早々の回答ありがとうございます。非常に参考になり解決しました。

その他の回答 (2)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

例えば合計が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によってその整数部分のみを取っています.

momo888
質問者

お礼

早々の回答ありがとうございます。(1)の例が非常に参考になりました。

回答No.1

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)) とすればどうでしょう。

momo888
質問者

お礼

早々の回答ありがとうございます。参考になりました。