里崎智也さんからビデオメッセージがもらえる

たとえば通知表とかでエクセルの表にはA、B、C、D、E、としてAを5 Bを4 Cを3 Dを2 Eを1
として 特定の欄にA、B、C、D、Eの数によって数値が入るようにするにはどのようなマクロを組めばよいのでしょうか?

A 回答 (5件)

=70-CODE(A1)

    • good
    • 3

=SUMPRODUCT((A1:E1="A")*5+(A1:E1="B")*4+(A1:E1="C")*3+(A1:E1="D")

*2+(A1:E1="E"))
    • good
    • 0
この回答へのお礼

ありがとうございます。シンプルで打ちやすそうです

お礼日時:2012/02/14 11:42

こんにちは!


関数でOKということなので・・・
一例です。

↓の画像のように表を作成しておきます。

そして、F2セルに
=IF(COUNTA(A2:E2),SUMPRODUCT((A2:E2=$H$2:$H$6)*$I$2:$I$6),"")
という数式を入れオートフィルで下へコピーすると
画像のような感じになります。

参考になりますかね?m(_ _)m
「エクセル2010で文字に数字を割り当てた」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。すっごいわかりやすいです。こんな感じで作りたいとおもってました!!

お礼日時:2012/02/14 11:41

>マクロを組めばよいのでしょうか?


 ⇒処理だけの丸投げ質問は止めて下さい。
  先ずは、ご自身で手続きしてみて、その中で問題点や不明点について質問されては
  如何でしょうか。

  例えば、ご質問内容からは関数でも十分に問題解決できそうなのに何故マクロに
  こだわるのかその理由を説明してみても良いと思う。

  
    • good
    • 0

マクロですか?


関数で実現できる内容なんですけど…。

たぶんマクロを教えてもらっても、質問の内容からすると質問者さん自身で
その内容を理解して変更ができるようには思えないのです。
(それって代わりにやってもらうだけで、本質的な解決じゃありませんよね?)


失礼しました。
自分から関数での代用をお奨めします。
COUNT系の関数であれば
 COUNTIF関数でしょう。
例:
 =COUNTIF(A1:E1,"A")*5+COUNTIF(A1:E1,"B")*4+COUNTIF(A1:E1,"C")*3+COUNTIF(A1:E1,"D")*2+COUNTIF(A1:E1,"E")*1
(長くなっているので見づらいと思います。ごめんなさい)
とか。
これ、何をやっているのか分かりますよね?
指定した範囲にある指定した文字の数を数えてその数に対してかけ算をして、それらを足しているだけです。
難しくありませんよね。

このようにあとから見ても分かるような形で作ることをお奨めします。
マクロを教えてもらって分かった気がしても、明日には分からなくなっていることも多いです。
実際、教えてもらったマクロの改変方法を尋ねる人も多くいます。(結構恥ずかしいことですよ。それ)
    • good
    • 0
この回答へのお礼

ありがとうございました
関数とマクロの区別ができませんでした。関数を教えてもらいたかったので
関数で十分です

お礼日時:2012/02/14 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルでルールに従い数字を振り分けたい。

つたない説明なのですが宜しくお願い致します。

最初に数式に優先順位と数字をつけてルールを作っておいて、
入力した数字をルールに従い、優先順位と数字を別のセルに反映・振り分けて表示したいのですが。

仮にA1セルが1,000、B1セルが1,500、C1セルが500、D1セルが合計3,000として優先順位をA1 → B1 → C1とした時に、

1)A2セルに3,000と入力するとつけておいた優先順位に従い3,000を、
A3セルに優先順位の高いA1セルからA1セルの1,000と反映・振り分け、B3セルにB1セルの1,500を、C3セルにC1のセル500を、D3セルに合計0と3,000を反映・振り分けさせて表示。

2)同じルールでA2セルに2,500と入力した場合は2,500を、
A3セルに優先順位の高いA1セルからA1セルの1,000と反映・振り分け、B3セルにB1セルの1,500を、C3セルにC1セルの500が反映できないので-500と、D3セルに合計-500と反映・振り分けさせて表示。

3)同じルールでA2セルに2,000と入力した場合は2,000を、
A3セルに優先順位の高いA1セルからA1セルの1,000、B3セルにB1セルの1,500が反映できないので-500、C3セルもC1セルの500が反映できないので-500と、D3セルに合計-1,000と反映・振り分けさせて表示。

つたない説明で申し訳ないのですが、このような数式表を作りたいのですが、どうぞ宜しくお願い致します。

つたない説明なのですが宜しくお願い致します。

最初に数式に優先順位と数字をつけてルールを作っておいて、
入力した数字をルールに従い、優先順位と数字を別のセルに反映・振り分けて表示したいのですが。

仮にA1セルが1,000、B1セルが1,500、C1セルが500、D1セルが合計3,000として優先順位をA1 → B1 → C1とした時に、

1)A2セルに3,000と入力するとつけておいた優先順位に従い3,000を、
A3セルに優先順位の高いA1セルからA1セルの1,000と反映・振り分け、B3セルにB1セルの1,500を、C3セルにC1のセル5...続きを読む

Aベストアンサー

結果通りにはなりますが、正しいのか保障できません。
反映できない時に表示する値の計算をもう一度見直してください。

A3=IF($A$2>=SUM($A$1:A$1),A$1,-MIN(SUM($A$1:A$1)-$A$2,A$1))
B3=IF($A$2>=SUM($A$1:B$1),B$1,-MIN(SUM($A$1:B$1)-$A$2,B$1))
C3=IF($A$2>=SUM($A$1:C$1),C$1,-MIN(SUM($A$1:C$1)-$A$2,C$1))
D3=SUMIF($A$3:$C$3,"<0")

Qエクセルで数字を入れたらとなりのセルに文字が出るようにするにはどうしたらいいですか?

小売店ですが仕入れの伝票の入力をしなければなりません。項目は・コード(六桁の数字)・商品名・数量・単価・金額です。
このコードナンバーを入れたら隣のセルに商品名そのまた隣のセルに単価と出るようにするにはどうしたらいいのでしょうか?
現在はすべてひとつづつ入力しています。
数量と単価を入れたら金額がでるようにだけは出来ましたがそれ以上がわかりません。
宜しくお願い申し上げます。

Aベストアンサー

別のシートで
   A   B  C 
  コード 商品名 単価
1 111111  あ  1000 
2 222222  い  2000
3 333333  う  3000

の一覧を作っておいて、VLOOKUPを使えばOKだと思います。

   A   B  C 
  コード 商品名 単価
1 111111   
2 222222

B1の欄には=VLOOKUP(A1,Sheet2!$A$1:$C$3,2,0)
C1の欄には=VLOOKUP(A1,Sheet2!$A$1:$C$3,3,0)

でいけると思います。
Sheet2と云うのは一覧のあるシート名です。

Qあるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように

お世話になります。

表題の通り、
あるセルに特定の文字列を打つと、
他のセルにあらかじめ決められた文字が自動入力するようにしたいです。

具体的に言うと、
(1)セル(A,1)に「キリン」と打ち込むと

   A   B   C   D
1 キリン
2
3
4

(2)1列目の B,C,Dに予め決めておいた文字が入力されるようにしたい

   A   B   C   D
1 キリン 首  長い  アフリカ
2
3
4

のです。
エクセルで可能でしょうか?
詳しい方よろしくお願いいたします!

Aベストアンサー

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A:D,3) ″
4  =VLOOKUP(A4,Sheet2!A:D,2) =VLOOKUP(A4,Sheet2!A:D,3) ″

を入れておきます。
これで出来ると思います。
エラー表示がいやな場合は、=IF(A1="","",VLOOKUP(A1,Sheet2!A:D,2)) の様にして下さい。

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A...続きを読む

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

Qエクセル 同じ値を探して隣の数値をコピーする

エクセルで以下の作業を簡単にする方法を教えて下さい。

Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行)
A列     B列
田中    13
山本     8
谷口    11
鈴木    6
佐々木    9
奥村     15




Sheet2のA列1行目から下には別のデータが入っています。(約600行)
A列
太田川
山村
田中
多賀先
鈴木
奥村
幸田




Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける。
見つからない場合はSheet2のB列は空欄のままです。
Sheet2
A列      B列
太田川     
山村
田中    13
多賀先
鈴木     6
奥村    15
幸田


Aベストアンサー

シート2のB2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet1!A:A,A2)=0,"",VLOOKUP(A2,Sheet1!A:B,2,FALSE))


人気Q&Aランキング