ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの文字を数値化して合計したい。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
関数は合計や平均くらいしか使えないのですが、仕事でフォーマットを作るように言われ困っています。

S,A,B,Cと入力した表の合計を、それぞれ3,2,1,0ptに換算して合計したいのですが、
そういった計算式はありますでしょうか??
(例えば、「S」「B」「B」「A」の縦計を「7」と表示させる。)


ネットで検索してみたらCODEを使うのかなぁと思ったのですが、どうもうまくできません。
パソコンはVistaです。

よろしくお願いいたします。

コメント(19)

「S]が常に数字の3であるように、その文字に対応する数値が常に一定であるのならは、vlookupを使って文字の横に対応する数字を参照させ、そこで計算すればできると思います。

理屈上ではそうですが、現場の様子がよく分かりません。ですから、そのまま使えるかどうかは、こずぅさんのご判断によりますが。
セルa2に
「=3*(a1="S")+2*(a1="A")+(a1="B")」
と入力してみてください

セルa1に「S」とか「A」を入力するのに対応して、セルa2の数字が変わります。
=(countif(範囲,"S")*3+countif(範囲,"A")*2+countif(範囲,"B")*1+countif(範囲,"C")*0)

とかそんな感じですか?
便乗質問させてもらって宜しいでしょうか?
私も非常に初心者で同じようなことで悩んでいました。

>1÷0さん

この式の3*(a1=”S”)ですが
a1がSだった時はエクセルは数字1と読み替え3*1を計算してくれるという式なのでしょうか?
少しこの式の解説をお願いできませんでしょうか?
よろしくです!
5: フッチーさん
False=0だから、ですね。
ただ、True=1であるとは限らないので、決め打ちは危険かと(Excelの場合「今のところは」True=1ですが、変更される可能性もあり得ます)。
基本的には「0以外」がTrueなので、別の言語に移ったときに同じ感覚でやってしまうと酷い目に遭います。
フッチー さん

たとえばセルb1に
「=(3=3)」と入力されると、3=3は正しいので「1」と同じ意味であるtrueが表示されます。これに別の数字を掛け算すると、さまざまな計算が可能です。
また、「=(3>4)」と入力すると、3>4は間違っているので「0」と同じ意味であるfalseが表示されます。これに数字をかけざんしても絶対0になります。

この等式や不等式を使うことで、vlookup関数やif関数を使わなくても高度な事務処理が可能です。
ちょっと特別ですが【配列数式】を使えば簡単?に答えがでます。
例えば
   A B C D E
 1  S B B A 7
 2  A B C A 5

※E1列に結果を表示する式は
 =SUM(IF(A1:D1="S",3,IF(A1:D1="A",2,IF(A1:D1="B",1,0))))
 ただ【配列数式】だと宣言しないといけないので、
 数式入力後は【Enter】キーではなく
 【Ctrl】キーと【Shift】キーを押しながら【Enter】キーを押します。

→数式の表示は{ }が追加されます。
 {=SUM(IF(A1:D1="S",3,IF(A1:D1="A",2,IF(A1:D1="B",1,0))))}

注)理解できない場合は、配列数式でヘルプ検索して下さい。
  また配列数式は使えない関数(AND等)もありますので、注意が必要です。
>やままやーまりにゃーさん

なるほど!
真とか偽とかって意味がよくわかってなかったのですが、
こういう事なんですね!
とてもよくわかりました。ありがとうございました!^^

>Kusakabeさん

ありがとうございます!
この手の計算式などを書く時には数値と文字式をしっかり分ける事が大切なんですね!
初心者に大切なことを教えて頂きありがたく思います^^

>1÷0さん

真・偽のことが本当に分かってきました。
今後とも色々教えて下さい!
初心者に分かりやすいよう、文字にも気を遣って頂き助かります^^
ちょっと追加させて頂きます。

【1÷0 】さんの論理式方式を使えばちょっと楽な式になります。

{=SUM((A1:D1="S")*3,(A1:D1="A")*2,(A1:D1="B")*1)}
9: こずぅさん
countifは、範囲内のセルの中から、条件式に合致するセルの数を数えるという関数です。
「こずぅ」さん
【配置数式】ではなく【配列数式】ですね。

【配列数式】とはメモリーに表(セルを複数)を作られると考えてください。
例えば、行列計算(MINVERSE関数等)は行列が複数ということは結果の表示も複数のセルが必要になります。
その場合は、複数セルの範囲選択→行列式を入力→【Ctrl】+【Shift】+【Enter】キーを押下 となります。

今回の配列数式は
 S,B,B,A を 3,2,2,1 とメモリに配列が取られます。
 それをSUM関数でメモリ配列を合計しセルに入れます。

よって、配列数式とはメモリに表を作ることだと考えてください。
最後にセルに表示する場合は、1つなのか複数(結果の範囲)なのかは考えて指定します。

説明が下手で申し訳ありません。
VBAを作成しなくても、色々な場面で対応できると思います。
また正しい答えがなかなか出なく、頭を悩ますこともあると思います。
 
なんか盛り上がっているようなので補足(蛇足かもしれないケド)

僕は論理式が一番初心者にも分かりやすく、上級者にとっても瞬間にできる技だと思ったので発言したんですが、他にも何10種類もの答えがあります。

第一に、こずぅさんが質問の段階であげているCODEを使うという方法は可能ですよ。
はじめから@=64,A=65,B=66,C=65というコードが割り振られているんです。
Sを@に変換するSUBSTITUTE関数と組み合わせると、
「=67-CODE(SUBSTITUTE(A1,"S","@"))」
となります。
しかし難しすぎますね。
※ちなみにこれに配列数式を組み合わせるとなると超難解になります。

第二に、一番最初の回答者の八神かかしさんのおっしゃる、VLOOKUP関数を使うのがもっともEXCELの基本に則っていていいと思います。

しかし、オフィスで上司の命令がくだされたとき、とっさに難しい数式を組み立てるのは困難かもしれません。
仕事中では発想を柔軟にして、置換機能(CTRL+H)が使えるようになるのが望ましいです。
最初の問題の通りそのまま、Sを3に置換、Aを2に置換、Bを1に置換と繰り返せば、お仕事かんりょうだったのでした。

ログインすると、残り7件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。