エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をおしえてください。


毎月エクセルで朝礼当番表を作っています。
土、日、祝がお休みです。
たとえば、1日に最初の人の名前を入力すると休みの日はぬかして、
順番に当番が入力されるという関数があれば教えてください。

1行目に「日にち」
2行目に「曜日」
3行目に「当番者名」

と簡単な表です。

リストからコピペしたら間違えてしまいました。

オートフィルで入力しようかと思ったのですが、休みの日を抜かすのが面倒で。


よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (10件)

>6行目(B6セル)に =IF(B6=0,MOD($B2-2+DAY(B3)-SUM($B5:B5),$B1)+1,0)


式を分解してみるとわかりやすいです。
更に
7行目に作業列 =$B2-2+DAY(B3)
    日にちごとに 日にち事に連続した番号になります。
8行目に作業列 =MOD($B2-2+DAY(B3),$B1)
    その番号を 人数で割ったあまりがでます。
9行目に作業列 =SUM($B5:B5)
    休みの数の合計がでます。

と入れて右へコピィしてみてください。
式のセルを指定する $B2 とか$マークが付く場合と付かない場合がありますよね。
絶対参照と呼びますが、意味は右へコピィしてもセルの位置を変動させないということです。
例えば
9行目の=SUM($B5:B5)の式を右へコピィした場合
=SUM($B5:B5)
=SUM($B5:C5)
=SUM($B5:D5)
・・・
と合計する範囲が広くなっていくように設定してあります。

別件ですが
カレンダーの日付をコピィの作業をしなくても良いように関数をいれておくことも出来ます。
   A     B   C   D・・・
1 人数    5   年  2010
2 最初の人  1   月   1
3 日付    10/1 10/2
4 曜日    金曜  土曜・・・
とD1セルに 年 の数値 D2セルに 月 を数値で入れます。
日付のB2セルには =DATE($D1,$D2,COLUMN(A1)) と入れて右へコピィしておきます
ここも 年と月を決める D1とD2のセルを指定するときは右へコピィしても変動しないように
$マークをつけておきます。
COLUMN(A1)はA1セルの列の番号です。右へコピィした場合に
COLUMN(B1)
COLUMN(C1) と変動する様に $マークは付けません。
*COLUMN(A1)は COLUMN(A2)でもACOLUMN(3)でもかまいません。
曜日のB3セルには =B2 と入れます。書式=>セル で表示形式のタブ ユーザ定義 で aaa
と入れると その日の表示が曜日になります。
B3セルも右へコピィします。
毎月、月の部分を変更するだけで その月のカレンダーになります。
表示形式については
http://www.excel.studio-kazu.jp/lib/e3g/e3g.html
などを参考にしてください。
    • good
    • 1
この回答へのお礼

補足説明ありがとうございました。
今日会社でやってみたところ成功しました。
どうしてもうまくいかなかったので、
=IF(B6=0,MOD($B2-2+DAY(B3)-SUM($B5:B5),$B1)+1,0)
の最初のB6=0を、B5=0とやったらできました。
あっていたのか?ちょっと不安ですが、おかげさまで表は完成いたしました。
どうもありがとうございました。
他の皆さんの方法を試す時間がなかった(というか私のレベルだと理解するのに時間がかかるので)
他の表に活用させていただきます。
どうもありがとうございました。

お礼日時:2010/09/28 23:37

No.8です!


たびたびお邪魔します。

前回の投稿でC3セルの数式を載せていませんでした。

表は前回そのままでC3セルの数式を

=IF(C4="","",INDEX($B$11:$B$20,IF(MOD(C4,COUNTA($B$11:$B$20))=0,COUNTA($B$11:$B$20),MOD(C4,COUNTA($B$11:$B$20)))))

としてください。

何度もごめんなさいね。m(__)m
    • good
    • 0
この回答へのお礼

何度もどうもありがとうございました。
今回は時間がなかったので、他の方の方法を使わせていただきましたが、
他にも似たような表が必要なのでそちらに応用させていただきます。
どうもありがとうございました。

お礼日時:2010/09/28 23:38

No.3・4です!


No.6さんの補足を読ませていただいて・・・
前回は大きな勘違いをしていました。列方向に日付があるわけですよね?
もう一度画像をアップしてみます。
Sheet2に祝日(B2~C23セル)に表を作っています。会社独自の休日があればこのデータに付け加えておいても構いません。
このB2~C23セルを範囲指定し、「祝日」と名前定義しています。

そして前回同様、その月の1日目が土日・祝日の場合は1日目のセルに入力できないので、Sheet1のB1~B4セルを予備の列としています。

B3セルは
=IF(A8="","",A8)

B4セルは
=IF(B3="","",INDEX(A11:A20,MATCH(B3,B11:B20)))

C1セル(セルの書式設定から表示形式はユーザー定義で d としておきます。)
=IF(MONTH(DATE($A$6,$A$7,COLUMN(A1)))=$A$7,DATE($A$6,$A$7,COLUMN(A1)),"")

C2セル(表示形式はユーザー定義から aaa として、
条件付書式から 数式が を選択、数式欄に=OR(WEEKDAY(C1)=1,WEEKDAY(C1)=7,COUNTIF(祝日,C1)) として書式からパターンで「赤」を選択
数式は
=IF(C1="","",C1)

C4セルの数式は
=IF(C1="","",IF(OR($B$4="",WEEKDAY(C1)=1,WEEKDAY(C1)=7,COUNTIF(祝日,C1)),"",$B$4+COUNT($B$4:B4)-1))

最後にC1~C4セルを範囲指定し、列(右)方向に31日までのAG列までオートフィルでコピーします。

これでSheet1のA6~A8に年・月・その月の最初の担当者を入力すれば
日付・曜日・担当者が順番に表示されると思います。
尚、このカレンダーは年と月を入れ替えるたびに何度でも利用できます。
担当者は10人まで対応できるようにしていますが、担当者の人数によって範囲指定の領域はアレンジしてみてください。
(10人以下ならこのままの数式でも構いません)

以上、長々と失礼しました。m(__)m
「エクセルで作成したカレンダーに「当番の名」の回答画像8
    • good
    • 0

例えば今年の9月のカレンダーを作るのならシート1のA1セルに2010/9/1と入力します。

その後にセルを右クリックして「セルの書式設定」から「表示形式」のタブで分類の「ユーザー定義」を選択し、種類の窓には m"月" と入力してOKします。これでA1セルには9月と表示されます。
次にA2セルには日付と入力し、B2セルには次の式を入力してAF2セルまでオートフィルドラッグします。

=IF(MONTH($A$1+COLUMN(A1)-1)<>MONTH($A$1),"",$A$1+COLUMN(A1)-1)

これで数値が表示されますがB2セルからAF2セルを選択して右クリックし、先と同様にして「表示形式」のタブの「ユーザー定義」で d"日" と入力してOKします。それによってその月の最終日までが日が付いて表示されます。
次に曜日ですがA3セルには曜日と入力し、B3セルには次の式を入力してAF3セルまでオートフィルドラッグします。

=IF(B2="","",TEXT(B2,"aaa"))

4行目には当番者名を表示させるわけですが、その前に祝祭日や当番者名の表を準備することが必要です。
シート2にそれらのデータを準備することにします。
シート2のA1セルには祝祭日と入力し、A2セルから下方にはその年の祝祭日を例えば2010年の1月1日でしたら2010/1/1のように入力します。9月でしたら2010/9/20や2010/9/23なども含まれますね。
また、C1セルには当番者名とでも入力しC2セルから下方に当番者の名前を入力します。
以上でシート2での準備作業は終了です。

なお、シート1では月の初めに必ずシート2の当番者名の最初の人(C2セル)の名前が来るとは限りませんので月の初めに最初に当番になる人の名前をシート2のC2セルから下方に何番目に有るかを調べ、シート1のC1セルに入力することにします。最初の人から始まるのでしたら1と入力します。D1セルには番目からとでも入力します。
その後にA4セルには当番者名と入力し、B4セルには次の式を入力してAF4セルまでオートフィルドラッグします。

=IF(OR($C$1="",B2=""),"",IF(OR(WEEKDAY(B2,2)>=6,COUNTIF(Sheet2!$A:$A,B2)>0),"",INDEX(Sheet2!$C$2:$C$100,MOD(COUNTIF($A4:A4,"?*")+$C$1-2,COUNTA(Sheet2!$C$2:$C$100))+1)))

なお、この式では必ずA4セルには当番者名などの文字列が,また、C1セルには数値が入力されていることが必要です。

丁寧に説明したつもりです。成功するよう願っています。
    • good
    • 1
この回答へのお礼

何度もどうもありがとうございました。
今回は時間がなかったので、他の方の方法を使わせていただきましたが、
他にも似たような表が必要なのでそちらに応用させていただきます。
どうもありがとうございました。

お礼日時:2010/09/28 23:39

最初の表の作り方ですが、通常は1行目に項目名を横に並べ、それぞれのデータは下方に入力するまたは表示させることでしょう。

ここでは通常の方法で述べます。
また、表示したい月の日付は自動的に月末までを表示させるようにし、朝礼の当番については月の初めで常に当番表の1番が来るとは限りませんのでそれらを考慮した表を作ることにします。
シート1にお求めの表を作るとしてシート2にはシート1を完成するために必要なデータベースを入力することにします。
シート2のA列には祝祭日を入力します。
A1セルに祝祭日と入力して下方にはその年の日付を例えば2010/1/11 2010/2/11 などと行を変えて入力します。
C1セルには当番者名などと入力し下方には氏名を入力します。
次にシート1ですが、A1セルには例えば今年の9月のカレンダーを作成するのでしたら2010/9/1と入力します。その後にセルを右クリックして「セルの書式設定」から「表示形式」のタブで「ユーザー定義」を選び種類の窓には m"月" と入力します。これでセルの表示は9月と表示されます。
次にA2セルには「日」、B2セルには「曜日」、C2セルには「当番者名」と入力します。
A3セルには次の式を入力して下方にオートフィルドラッグします。

=IF(MONTH(A$1+ROW(A1)-1)<>MONTH(A$1),"",A$1+ROW(A1)-1)

その後にそれらのセル範囲を選択してから上記と同様に「表示形式」の「ユーザー定義」で種類の窓には d と入力します。数値だけが表示されます。
なお、この式では月が変わってもその最終日までが自動的に表示されます。
次にB3セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A3="","",TEXT(A3,"aaa"))

これでB列には曜日が表示されます。
次にC1セルにはシート2で当番者名が並んでいますが上から何番目の方が今月初めの当番になるかを数値で入力します。1番目の方から当番を開始するのであれば1と入力します。D1セルには「番から」とでも入力します。
C2セルには当番者名と入力します。
C3セルには次の式を入力して下方にオートフィルドラッグします。

=IF(OR(A3="",WEEKDAY(A3,2)>=6,COUNTIF(Sheet2!A:A,A3)>0),"",INDEX(Sheet2!C$2:C$100,MOD(COUNTIF(C$2:C2,"?*")+C$1-2,COUNTA(Sheet2!C$2:C$100))+1))

一度是非試験してみてください。

この回答への補足

今日会社でやってみました。
が、ごめんなさい。説明不足でした。

         A、B、C・・・
1行目→日にちは横へ1,2,3,4、
2行目→曜日、
3行目→担当者

なのです。
うまくいかなかったので、ROW関数をしらべてみたら行の値を返すとかいてあったので、
COUNTI???というのに変えてみましたが、だめでした。
そこで力つきました・・・・

補足日時:2010/09/21 22:22
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
初心者なもので、そういった関数でもないかと思い、かる~く質問させていただいたのですが、
いろいろ組み合わせないとならないのですね。
みなさんの回答を理解するまで時間がかかりそうですが、
いろいろ試してみます。
ありがとうございました。

お礼日時:2010/09/20 23:25

 今仮に、Sheet1のA1セルに、その年の西暦年数、C1セルに月、F1セルに第1日目の当番者名を入力すると、A4セルから下に向かって日にちが順番に自動表示され、各日にちと同じ行のB列にはその日の曜日、C列にはその日の当番者名が自動表示されるものとします。


 又、自動表示を行う際の判定のためには、当番者のリストと、土日以外の休日のリストが必要になりますから、それらのリストをSheet2に設けるものとします。

 まず、Sheet2のB1セルに項目名として「当番者名」と入力して下さい。
 同様に項目名として、
E5セルに「休日の日にち」、
F1セルとF5セルに「夏休み」、
G1セルとG5セルに「冬休み」、
H1セルとH5セルに「春休み」、
E2セルに「開始日」
E3セルに「最終日」
と入力して下さい。
 次に、F6セルに次の数式を入力して下さい。

=F$2

 次に、F7セルに次の数式を入力して下さい。

=IF(OR(F$2="",F$3="",F6=""),"",IF(F6+1>F$3,"",F6+1))

 次に、F6~F7の範囲をコピーして、G6~H7の範囲に貼り付けて下さい。

 次に、F7~G7の範囲をコピーして、同じ列の8行目以下に、最も長い休みの日数を上回るのに充分な回数だけ貼り付けて下さい。
 次に、B2セルから下方へ向かって、各当番者の名前を、当番を行う順番に入力して下さい。
 次にE6セルから下方へ向かって、年間の祝祭日等の、土日以外の休日を

2010/1/1
2010/1/2
2010/1/3
2010/1/11
2010/2/11
  ・
  ・
  ・
  ・
  ・
2010/12/23
2010/12/31

という具合に入力して下さい。(順不同も可)
 次に、F2セルに夏休みの開始日を、
F3セルに夏休みの最終日を、
G2セルに冬休みの開始日を、
G3セルに冬休みの最終日を、
H2セルに春休みの開始日を、
H3セルに春休みの最終日を
入力して下さい。

 次にSheet1を開いて、A1セル、C1セル、F1セルを枠線で囲んで下さい。
 次に項目名として、
B1セルに「年」、
D1セルに「月」、
E1セルに「最初の当番者名:」、
A3セルに「日にち」、
B3セルに「曜日」、
C3セルに「当番者名」、
と入力して下さい。

 次に、A4セルのセルの書式設定の表示形式を、ユーザー定義の

d"日"

とし、同じくB4セルのセルの書式設定を

aaa

として下さい。
 次に、A4セルに次の数式を入力して下さい。

=IF(ROWS($3:3)>DAY(DATE($A$1,$C$1+1,)),"",DATE($A$1,$C$1,ROWS($3:3)))

 次に、B4セルに次の数式を入力して下さい。

=A4

 次に、C4セルに次の数式を入力して下さい。

=IF($A4="","",IF(OR(WEEKDAY($A4,2)>5,COUNTIF(Sheet2!$E:$H,$A4)>0),"【休日】",INDEX(Sheet2!$B:$B,MOD(MATCH($F$1,Sheet2!$B:$B,0)+COUNTIF(C$3:C3,"<>【休日】")-2,COUNTIF(Sheet2!$B:$B,"<>")-1)+2)))

 次に、A4~C4の範囲をコピーして、同じ列の5行目~34行目の範囲に貼り付けて下さい。

 そして、必ずしも必要ではありませんが、F1セルに最初の当番者名を入力する際に便利になる様に、F1セルの入力規則を「リスト」に設定して、「元の値」欄の中に入力する数式を以下の様にして下さい。

=INDIRECT("Sheet2!B2:B"&COUNTIF(INDIRECT("Sheet2!B:B"),"<>")-1)

 以上で準備は完了で、後は
Sheet1のA1セルに、その年の西暦年数、C1セルに月、F1セルに第1日目の当番者名を入力すれば、当番表が自動表示されます。
 尚、Sheet2の休日のリストは、年が変わる度に更新して下さい。
    • good
    • 0
この回答へのお礼

夏休み、冬休み・・・全然考えておりませんでした。
全部自動ででてくるなんてすごいです。
どうもありがとうございます。
明日会社で試してみます。

お礼日時:2010/09/20 23:22

No.3です!


たびたびごめんなさい。

前回のD5セルの数式内に
"祝日" というものが出ていますが、これは条件付書式を設定する場合は別Sheetを直接参照できませんので、
範囲を名前定義していた関係です。

この際ですので、前回のB列に色を付ける方法も投稿しておきます。

当方使用のExcel2003の場合です。
前回のSheet2のB2~C23(今年と来年分のシリアル値の祝日データです)を範囲指定 → メニュー → 挿入 → 名前 → 祝日 と名前定義しています。
(B2~C23を範囲指定し、直接名前ボックスに 祝日 と入力してもかまいません)

Sheet1のB5セルには前回の数式を入れて、条件付書式を設定します。
メニュー → 書式 → 条件付書式 → 「数式が」を選択 → 数式欄に
=OR(WEEKDAY(A5=1,WEEKDAY(A5)=7,COUNTIF(祝日,A5) として 書式 → パターン で「赤」を選択し、
オートフィルで下へコピーすると土日・祝日のセルが赤くなります。

結局数式を入れる前にこの名前定義を行っていたので、Sheet2のB2~C23を範囲指定すると

=IF(OR($C$4="",A5="",WEEKDAY(A5)=1,WEEKDAY(A5)=7,COUNTIF(祝日,A5)),"",$D$4+COUNT($D$4:D4)-1)

となってしまいます。
名前定義していなければD5セルは
=IF(OR($C$4="",A5="",WEEKDAY(A5)=1,WEEKDAY(A5)=7,COUNTIF(Sheet2!$B$2:$C$23,A5)),"",$D$4+COUNT($D$4:D4)-1)
という数式になります。

何度も失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

たびたびご丁寧にありがとうございます。

お礼日時:2010/09/20 23:20

こんばんは!


外していたらごめんなさい。

こういうことで良いのですかね?
↓の画像でC4セルにその月の1日の担当者を入力すると、F・G列に作成している表の順に土日・祝日を除いた日に
順番にC4セルに入力した人から繰り返して表示するようにしてみました。
尚、C5セルに入力しないのは、1日が土日・祝日の可能性があるので敢えて別セルに入力するようにしています。

準備段階として、↓の画像では右側がSheet2でそこに祝日データを作っておきます。
そして、日付に関してはシリアル値の方が都合がよいのでシリアル値にし、表示形式だけを変えています。

Sheet1の1行目に年・月度を入力するセルを設けています。

A5セル(セルの表示形式はユーザー定義から d としておきます)は
=IF(MONTH(DATE($A$1,$C$1,ROW(A1)))=$C$1,DATE($A$1,$C$1,ROW(A1)),"")

B5セル(セルの表示形式はユーザー定義から aaa としておきます)は
=IF(A5="","",A5)

C5セルに
=IF(D5="","",INDEX($G$5:$G$14,IF(MOD(D5,COUNTA($G$5:$G$14))=0,COUNTA($G$5:$G$14),MOD(D5,COUNTA($G$5:$G$14)))))

作業列D4セルに
=IF(C4="","",INDEX(F5:F8,MATCH(C4,G5:G8,0)))

D5セルに
=IF(OR($C$4="",A5="",WEEKDAY(A5)=1,WEEKDAY(A5)=7,COUNTIF(祝日,A5)),"",$D$4+COUNT($D$4:D4)-1)

として最後にA5~D5セルを範囲指定し、D5セルのフィルハンドルで31日の35行目までコピーすると
画像のような感じになります。

これでF・G列の担当者の人数に変更があっても対応できると思います。
(B列のセルの色は条件付書式で設定しています。)

以上、長々と失礼しました。
参考になればよいのですが
的外れならごめんなさいね。m(__)m
「エクセルで作成したカレンダーに「当番の名」の回答画像3
    • good
    • 0
この回答へのお礼

画像までつけてくださってどうもありがとうございます。
祝日は手入力で対応しようと思っていたので、
そこまで考えてくださってありがとうございます。
全然まとはずれじゃないです。
明日会社で試してみます。

お礼日時:2010/09/20 23:10

どれだけ手間が省けるかわかりませんが、一例です


http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/ …
に祝日の一覧がありますので URLに従って 祝日 という名前で定義しておきます。
カレンダーのシートが
   A     B   C・・・
1 人数    5
2 最初の人  1
3 日付    10/1 10/2
4 曜日    金曜  土曜・・・
5 作業列   0   1・・・
6 作業列   1   0・・・
と準備して
5行目(B5セル)に =COUNTIF(祝日,B3)+(WEEKDAY(B3)=1)+(WEEKDAY(B3)=7)
と入れて右へコピィしえおきます。休みの日が 1 それ以外が 0 になるはずです。
更に
6行目(B6セル)に =IF(B6=0,MOD($B2-2+DAY(B3)-SUM($B5:B5),$B1)+1,0)
と入れて右へコピィすれば 休み以外で 連続した番号が繰り返されると思いますので
後は、別のシートに当番の名前の一覧表を準備します。
 番号  氏名
  0  休日
  1  Aさん
  2  Bさん
・・・
7行目に vLOOKUP関数を使って名前が表示できます。
毎月 3行目の日付と最初の人の番号を変えると後は自動ですむはずです。
がんばって式を考えれば作業列を省くことも出来ますが、とりあえずは式の意味を理解してください。
作業列が邪魔であれば非表示にしておきます。

この回答への補足

今日、会社でやってみました。
5の作業列に0、1までうまくいったのですが、
6の作業列がどうしてもうまくいきません。
2行目の最初の人→1というのは、1から始まるのなら「1」だけ入力すればいいのでしょうか?
あと、大変申し訳ないのですが、お時間がありましたら6行目の式の意味を教えていただけますでしょうか?
そうしたら、自分で治せるかもしれないので。
よろしくお願いいたします。

補足日時:2010/09/21 22:17
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
なるほど、番号を振るのですね。
めちゃくちゃ初級者なので、式の意味を理解できるか微妙ですが、
明日会社でやってみます。

お礼日時:2010/09/20 22:58

> オートフィルで入力しようかと思ったのですが、休みの日を抜かすのが面倒で。



どんな関数を使う(一番の候補はWORKDAY)にせよ祝祭日は自分で設定しないといけませんから、それが面倒というのですから無理です。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

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

Qlenovoタブレット android5.1 と 5.1.1

ご存知の方、教えてください。

格安SIMを使ったタブレットが調子が悪いので、端末を買い替えようと思っています。

現在OCNモバイルONEですので、モバイルONEのHPから動作確認済み端末をみて、
lenovo yoga タブレット 3 10を購入しようと考えています。

ところがOCNの動作確認済み端末の表には、OSがandroid5.1.1となっていました。
一方lenovoや量販店のHPをみても、android5.1.1の記載はありません。
すべてandroid5.1です。

OCNのコールセンタに問い合わせたところ、
「動作確認した端末はandroid5.1.1であった。それ以上のことはわからない。」

と言われました。

・なぜこのようなことになっているのか?

・android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか。

教えていただければありがたく思います。
よろしくお願いいたします。

Aベストアンサー

>android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか

使えます。(Windows8→Windows8.1→Windows8.1Update版のようなもの)
但しメーカーのサイトに「注:すべてのカードの動作を保証するものではありません」とあります。

「SIMスロット:なし」→SIMカードをどこに入れるの?
http://www.lenovo.com/jp/catalog/tablet/2015/yogat3_10_rt_1027.html

>なぜこのようなことになっているのか?

androidのOSメーカーがバージョンアップで5.1.1を出しても、モバイル機種メーカーやユーザーが5.1から5.1.1にバージョンアップするとは限りません。
「OSは出荷時期によってバージョンが変更されている場合があります」とあります。

YOGA Tab 3 10 ZA0J0005JP SIMフリー のスペック・仕様・特長
SIM情報:SIMフリー (micro-SIM) ←対応している
http://kakaku.com/item/K0000824208/spec/

>android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか

使えます。(Windows8→Windows8.1→Windows8.1Update版のようなもの)
但しメーカーのサイトに「注:すべてのカードの動作を保証するものではありません」とあります。

「SIMスロット:なし」→SIMカードをどこに入れるの?
http://www.lenovo.com/jp/catalog/tablet/2015/yogat3_10_rt_1027.html

>なぜこのようなことになっているのか?

androidのOSメーカーがバージョンアップで5.1.1を出しても、モバイル機種メーカーやユーザーが5.1から5.1...続きを読む

Qエクセルで月日と曜日一覧を自動的に入力させたい

恐れ入ります。
エクセルについて質問します。
下記のような月日と曜日の入力をしております。

    A    B    C    
  ーーーーーーーーーーーーーーーーー
1  7月1日|7月2日|7月3日|・・・・
  ーーーーーーーーーーーーーーーーー
2    月 |  火 |  水 |・・・・
  ーーーーーーーーーーーーーーーーー
3

 たとえばどこかのセルに「  年」「  月」を入力するようにしたら、自動的に上記の一覧に月日と曜日を入力させるようにできませんでしょうか。
 30日までの月の場合、31日にあたるセルがエラー表示にならないようにもしたいです。

 お知恵をお貸しください。

Aベストアンサー

画像で
1.A1に 2013
2.A2に 6
3.C1に =DATE(A1,A2,1)
表示形式 → ユーザー定義 → 種類にm/d
4.D1に =DATE(A1,A2,1)
表示形式 → ユーザー定義 → 種類にm/d
5.D1をAG1までオートフィル
6.C2に =B3
表示形式 → ユーザー定義 → 種類に(aaa)
7.C2をAG2までオートフィル

Q日産LEAFでandroidスマホをオーディオとして使えますか?

日産LEAFのナビ(EV専用カーウイングスナビゲーションシステム)で現在iPhone4をオーディオ代わりに使っています。

iPhoneを別途使う必要が生じたため、iPodを物色していたのですが、希望の32GB以上となるとtouchクラスになり、そう安くありません。

ならいっそのこと、androidスマホの中古を買って、前から試してみたかったLeaf Spy(android2.0以降)も導入してしまおうかと思いつきました。

しかし、日産のホームページを見ても、iPodの対応表はあるのですが、andoridスマホが使えるかどうかは載っていません。

どなたか実際に試していらっしゃる方、どの機種なら使えたといった情報よろしくお願いします。

Aベストアンサー

最大限の機能を使うのであればiPhoneやiPodの方が公式サポートもされていますし、おススメなのですが…
Bluetooth対応機種でしたら、ハンズフリーはAndroidでも可能かと思います。
ですが、ダイレクトで繋ぐわけではないのでオーディオ再生はできない可能性の方が高いですね;

お近くの日産へ行き、確かめる方がいいかもしれません。
また、修理なども受け付ける店舗ですと、在庫があればAndroid用のケーブル等も用意している場合がありますので、大き目の店舗に行かれるのがいいかと思います。

ちなみに、アプリも色々な機能があるようです。
http://www.nissan.co.jp/EVENT/APPLI/

オーディオのみの用途でしたら、USBメモリーでも対応していますのでこれが一番安上がりかと思います。

Qエクセル:複数シートのデータを一覧シートに自動的に入力させるには?

エクセル:複数シートのデータを一覧シートに自動的に入力させるには?

こんにちは。
お恥ずかしながら一日に2回もエクセルの質問をさせて頂きます。
複数シートに同一形式のリストがあり、あるシートに入力していくと
同一ファイル内の「一覧シート」に自動的にID番号順に表記される(※下記参照)
というようにしたいと考えております。

何かよい方法はありますでしょうか?
お知恵を拝借できれば幸いです。宜しくお願い致します。


Sheet1
ID 日付     名前  達成度・・・
1 2010/10/17  山田  A
4 2010/10/30 鈴木  A




Sheet2
ID 日付    名前  達成度・・・
2 2010/10/17  佐藤  B
3 2010/10/20 中村  B




一覧シート
ID 日付    名前  達成度・・・
1 2010/10/17  山田  A
2 2010/10/18  佐藤  B
3 2010/10/20 中村  B
4 2010/10/30 鈴木  A


Aベストアンサー

シートはSheet1からSheet2まで、各シートのデータ数は10までとして説明します。

Sheet3の
(1)A1に「=Sheet1!A2」と入力し、B1からD1にコピー
(2)A1からD1を、下へ9行分コピー
(3)A11に「=Sheet2!A2」と入力し、B11からD11にコピー
(4)A11からD11を下へ9行分コピー

Sheet4の
(5)A1からD1に「ID」「日付」「名前」「達成度」と入力
(6)A2に「=ROW()-1」と入力
(7)B2に「=VLOOKUP($A2,Sheet3!$A:$D,COLUMN(),0)」と入力
(8)B2をC2、D2にコピー
(9)B2のセルの書式設定を日付にする。
(10)A2からD2を、下へ19行分コピーする。

シート数やデータ数に応じて適宜変えてください。

QAndroidアプリの開発について

アンドロイドアプリ開発の勉強をしておりますが
全くの素人のためご教授願います。


以下で、氏名1を選択すると、勤務表が表示されるのですが
スクロールされずに悩んでおります。

自分なりに調べてみると
XMLでScrollViewの中にTextViewを入れれば
スクロールされるようなのですが、うまくスクロールされません。

どのように記述すれば、スクロールされるのでしょうか?


以上、宜しくお願いいたします。




package test.kintai;

/**import java.nio.charset.Charset; */

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;

public class kintai extends Activity implements DialogInterface.OnClickListener{
/** Called when the activity is first created. */
public AlertDialog _alertDialog;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

public void onResume(){
super.onResume();
CharSequence[] _char = {"氏名1","氏名2","氏名3","氏名4","氏名5","氏名6","氏名7"};
_alertDialog = new AlertDialog.Builder(this)
.setTitle("勤務表")
.setCancelable(false)
.setItems(_char, this).show();
}

@Override
public void onClick(DialogInterface dialog, int which) {
setContentView(R.layout.main);

if(_alertDialog == dialog){
TextView display = new TextView(this);
switch(which){
case 0:
display.setText("氏名1\n" +
"\n" +
"2011年4月\n" +
"\n" +
" 1日(日) 休\n" +
" 2日(月) 夜勤\n" +
" 3日(火) 休\n" +
" 4日(水) 休\n" +
" 5日(木) 休\n" +
" 6日(金) 夜勤\n" +
" 7日(土) 休\n" +
" 8日(日) 休\n" +
" 9日(月) 日勤\n" +
"10日(火) 日勤\n" +
"11日(水) 日勤\n" +
"12日(木) 日勤\n" +
"13日(金) 夜勤\n" +
"14日(土) 休\n" +
"15日(日) 休\n" +
"16日(月) 日勤\n" +
"17日(火) 日勤\n" +
"18日(水) 日勤\n" +
"19日(木) 日勤\n" +
"20日(金) 夜勤\n" +
"21日(土) 休\n" +
"22日(日) 休\n" +
"23日(月) 日勤\n" +
"24日(火) 日勤\n" +
"25日(水) 日勤\n" +
"26日(木) 日勤\n" +
"27日(金) 夜勤\n" +
"28日(土) 休\n" +
"29日(日) 休\n" +
"30日(月) 日勤\n" +
"31日(火) 日勤\n");
break;
case 1:
display.setText("氏名2");
break;
case 2:
display.setText("氏名3");
break;
case 3:
display.setText("氏名4");
break;
case 4:
display.setText("氏名5");
break;
case 5:
display.setText("氏名6");
break;
case 6:
display.setText("氏名7");
break;

}
setContentView(display);
}

}

}






---------------
■main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</ScrollView>



</LinearLayout>

アンドロイドアプリ開発の勉強をしておりますが
全くの素人のためご教授願います。


以下で、氏名1を選択すると、勤務表が表示されるのですが
スクロールされずに悩んでおります。

自分なりに調べてみると
XMLでScrollViewの中にTextViewを入れれば
スクロールされるようなのですが、うまくスクロールされません。

どのように記述すれば、スクロールされるのでしょうか?


以上、宜しくお願いいたします。




package test.kintai;

/**import java.nio.charset.Charset; */

import android.app.Activi...続きを読む

Aベストアンサー

onClickメソッドの最後で
setContentView(display);
とやっているので、XMLの設定を TextViewで置き換えてしまっています。

以下のようにすればうまくいきますよ。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public void onClick(DialogInterface dialog, int which) {
if(_alertDialog == dialog){
TextView display = (TextView)findViewById(R.id.display);
switch(which){
~省略~
}
}
}

Qエクセルで、郵便番号を入力すれば、自動的に右のセルに住所が入力される方法

質問をご覧になっていただきありがとうございます。

タイトルの通りなのですが、
郵便番号を入れれば、自動的に右のセルに住所が入力される方法
をご存知ないでしょうか?

一応それらしいソフトはインストールしたのですが、
使い方が分かりません。私のバージョンは2000で、会社のは2007です。
http://office.microsoft.com/ja-jp/excel/HP100775141041.aspx
ここからダウンロードしました。

明日仕事で使いたいので焦ってます。どうかよろしくお願いします。

Aベストアンサー

2007の例です。
「アドイン」タブの「ウィザード」の▼から「郵便番号変換」をクリックします。
「郵便番号から住所を生成する」にチェックをして「次へ」、「郵便番号データのセル範囲」にはシートでの範囲(たとえばA列)をカーソルで選択して入力します。同様に「住所を出力するセル範囲」(たとえばB列)を入力します。その後に必ず「既存のセルを上書きする」にチェックがあることを確認します。チェックが無いと表示されません。
「次へ」でコメントに出力するにチェックがあると思いますのでそのまま「完了」します。

QAndroid開発(Listview)について

Androidアプリ開発における
listviewについて質問させてください。

以下で、東京都,神奈川県,千葉県,埼玉県,茨城県,栃木県,群馬県と表示されています。

東京をクリックしたら、新宿、上野、秋葉原
千葉をクリックしたら、千葉、市川、船橋
といったように、さらに地域を絞っていきたいと考えています。

どのような方法で、実現できるか
アドバイスして頂けると助かります。



■searchActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;


public class searchActivity extends Activity {
private ListView list;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
}
}


■main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:background="#ffffff"

>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>



■list.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:paddingTop="50.0px"
android:paddingLeft="20.0px"
android:background="#ffffff"
android:textColor="#000000"

/>






以上、宜しくお願いいたします。

Androidアプリ開発における
listviewについて質問させてください。

以下で、東京都,神奈川県,千葉県,埼玉県,茨城県,栃木県,群馬県と表示されています。

東京をクリックしたら、新宿、上野、秋葉原
千葉をクリックしたら、千葉、市川、船橋
といったように、さらに地域を絞っていきたいと考えています。

どのような方法で、実現できるか
アドバイスして頂けると助かります。



■searchActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;


...続きを読む

Aベストアンサー

ザックリとですが、こんな感じでやればよいと思いますよ。

■searchActivity.java(変更点)
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
setList2(arg3);
}
});
}

private void setList2(long id) {
String[] tokyo = {"新宿","上野","秋葉原"};
String[] chiba = {"千葉","市川","船橋"};

ArrayAdapter<String> adapter = null;
switch ((int)id) {
case 0:
adapter = new ArrayAdapter<String>(this, R.layout.list, tokyo);
break;
case 2:
adapter = new ArrayAdapter<String>(this, R.layout.list, chiba);
break;
}
list.setVisibility(View.GONE);

ListView list2 = (ListView)this.findViewById(R.id.list2);
list2.setAdapter(adapter);
list2.setVisibility(View.VISIBLE);
}

■main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:textSize="20sp"
android:background="#ffffff">

<ListView
android:id="@+id/list"
android:visibility="visible"
android:layout_height="fill_parent" android:layout_width="fill_parent"/>

<ListView
android:id="@+id/list2"
android:visibility="gone"
android:layout_width="fill_parent" android:layout_height="fill_parent"/>

</RelativeLayout>

ザックリとですが、こんな感じでやればよいと思いますよ。

■searchActivity.java(変更点)
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListen...続きを読む

Qエクセルで条件書式と入力規則を使い、カレンダーを作りたい!

仕事でエクセルを使って、
「各営業所における営業日の実績データ」を収集しているのですが、
PCを得意としていない人たちが入力していることもあり、
休業日など目的と違うところにデータを入力してしまうことがあります。

そこで、視覚的に入力するところを分かりやすくし、
それでも間違ったところに入力してしまうのを防ぐため、
条件書式と入力規則を使って、カレンダーを作りました。

年月を入力すれば自動的に日付が変わるカレンダーを作り、
日付は正しく反映されているのですが、
営業日と休業日が上手く反映されず、その原因が分かりません・・・。


当社の営業日設定なのですが、
基本的に平日と日曜が営業日で、休業日は土曜と祝日になります。
ただし、平日が祝日だった場合は休業ですが、
日曜日と祝日が重なった場合は営業日になります。
なお、年末年始(12/31~1/3)は休業日になります。
さらにややこしくなってしまうのですが、
GW中(4/28~5/7)の日曜日、年末年始(12/30~1/5)の日曜日は、
長期連休ということで休業日になっています。

エクセルのデータですが、
列Aには日付(A3が1日)、列Bには曜日が入力してあり、
列Cと列Dに実績データを入力してもらう形にしてあり、
ここに条件書式と入力規則を設定しています。
また、セルV2~W33までに各祝日のリストとその振替休日、
加えてそれ以外の休業日(12/30、1/2、1/3)の日付を記入してあります。


前置きが長くなってしまって申し訳ございません。
以下が、私の考えた条件書式と入力規則の流れです。

まず休業日を考え、入力規則のユーザー設定に、

=OR(
COUNTIF($V$2:$W$33,$A3)<>0,
MOD($A3,7)=0
)(※祝日リストに日付があるか、土曜日である)

として、さらにGW・年末年始休業の部分を、

AND(MOD($A3,7)=1,AND(MONTH($A3)=4,DAY($A3)>=28)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=5,DAY($A3)<=7)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=12,DAY($A3)>=30)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=1,DAY($A3)<=5)),

と考えました。また祝日かつ日曜日は営業日となることを、

AND(COUNTIF($V$2:$W$33,$A3)<>0,MOD($A3,7)=1),

と考えて、その逆が休業日であることから、

=OR(
COUNTIF($V$2:$W$33,$A3)<>0,
MOD($A3,7)=0,
OR(COUNTIF($V$2:$W$33,$A3)=0,MOD($A3,7)<>1),
AND(MOD($A3,7)=1,AND(MONTH($A3)=5,DAY($A3)<=7)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=4,DAY($A3)>=28)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=12,DAY($A3)>=30)),
AND(MOD($A3,7)=1,AND(MONTH($A3)=1,DAY($A3)<=5))
)

上記を休業日として入力規則に入力しようとしましたが、
長過ぎて入らないようなので、GW・年末年始休業の部分を、
必要な該当月ごとに書き換えてみましたが、うまくいきませんでした。
ちなみに、その逆が営業日であるので、条件付き書式の数式に、

=AND(
COUNTIF($V$2:$W$33,$A3)=0,
MOD($A3,7)<>0,
AND(COUNTIF($V$2:$W$33,$A3)<>0,MOD($A3,7)=1),
OR(MOD($A3,7)<>1,OR(MONTH($A3)<>12,DAY($A3)<30))
)

と入力し、確認しましたが、やはりダメでした。
(ちなみに、「祝日かつ日曜日」があり「年末年始休業日」もある
 2012年12月に設定を入力しながら結果を確認していました。)


いろいろ試行錯誤した結果、一つ一つはどうやら正しいので、
組み合わせたときに、「祝日かつ日曜日」と「祝日でない」が
同居しているのが悪いと思うのですが、何か解決策はないでしょうか?
長い文章になってしまい恐縮ですが、ご教授お願い致します。

仕事でエクセルを使って、
「各営業所における営業日の実績データ」を収集しているのですが、
PCを得意としていない人たちが入力していることもあり、
休業日など目的と違うところにデータを入力してしまうことがあります。

そこで、視覚的に入力するところを分かりやすくし、
それでも間違ったところに入力してしまうのを防ぐため、
条件書式と入力規則を使って、カレンダーを作りました。

年月を入力すれば自動的に日付が変わるカレンダーを作り、
日付は正しく反映されているのですが、
営業日と...続きを読む

Aベストアンサー

お休みの条件を整理しましょう

1.土曜日
2.日曜日ではない祝日
3.年末年始(12/31~1/3)
4.GW中(4/28~5/7)の日曜日
5.年末年始期間(12/30~1/5)の日曜日

1. =(WEEKDAY(A3)=7)
2. =AND(COUNTIF($V$2:$W$33,$A3)>0,WEEKDAY(A3)>1)
3. =OR((A3=DATEVALUE(YEAR(A3)&"/12/31")),(A3<=DATEVALUE(YEAR(A3)&"/1/3")))
4. =AND((A3>=DATEVALUE(YEAR(A3)&"/4/28")),(A3<=DATEVALUE(YEAR(A3)&"/5/7")),WEEKDAY(A3)=1)
5. =AND(OR((A3>=DATEVALUE(YEAR(A3)&"/12/30")),(A3<=DATEVALUE(YEAR(A3)&"/1/5"))),WEEKDAY(A3)=1)

この5つの条件のどれかが成立した時が休業日になります。

添付の図では、各条件をF~J列に入れて、判り易くするため1を掛けてTRUE/FALSEを1/0で表示しています。
また、E列には =MAX(F3:J3)と入れて休業日条件が1つでも成立している日に1を表示させています。

お休みの条件を整理しましょう

1.土曜日
2.日曜日ではない祝日
3.年末年始(12/31~1/3)
4.GW中(4/28~5/7)の日曜日
5.年末年始期間(12/30~1/5)の日曜日

1. =(WEEKDAY(A3)=7)
2. =AND(COUNTIF($V$2:$W$33,$A3)>0,WEEKDAY(A3)>1)
3. =OR((A3=DATEVALUE(YEAR(A3)&"/12/31")),(A3<=DATEVALUE(YEAR(A3)&"/1/3")))
4. =AND((A3>=DATEVALUE(YEAR(A3)&"/4/28")),(A3<=DATEVALUE(YEAR(A3)&"/5/7")),WEEKDAY(A3)=1)
5. =AND(OR((A3>=DATEVALUE(YEAR(A3)&"/12/30")),(A3<=DATEVALUE(YEAR(A3)&"/1/5"))),WEEKDAY...続きを読む

Qandroidのサンプルソースについての質問

このページを参考に学習をしていたのですが
http://libro99.appspot.com/index3?id=29&page=2&label=android

.javaに追加するぶぶんで

text.setText(selradio.getText());
~~~~
の波線の部分のエラーをどうしても消すことができず
困っています

package test.radiobutton;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class radiobuttontest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RadioGroup group = (RadioGroup)this.findViewById(R.id.group);
RadioButton radio1 = (RadioButton)this.findViewById(R.id.radio1);
RadioButton radio2 = (RadioButton)this.findViewById(R.id.radio2);


radio2.setChecked(true);


int selid = group.getCheckedRadioButtonId();
RadioButton selradio = (RadioButton)this.findViewById(selid);
text.setText(selradio.getText());
}
}

main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>

<RadioGroup
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>

<RadioButton
android:text="@string/radio1_label"
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<RadioButton
android:text="@string/radio2_label"
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</RadioGroup>
</LinearLayout>

これ以上はかけませんがページの指示通りにやってるつもりです
どなたかご教授お願いします

このページを参考に学習をしていたのですが
http://libro99.appspot.com/index3?id=29&page=2&label=android

.javaに追加するぶぶんで

text.setText(selradio.getText());
~~~~
の波線の部分のエラーをどうしても消すことができず
困っています

package test.radiobutton;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class radiobuttontest extends Activity {
/** Called when the activity is first creat...続きを読む

Aベストアンサー

こんにちは

Androidをやったことがないので間違っていたら済みません。

質問欄に掲載されたURLから辿ったところ、
少し前の項目”Google androidプログラミング入門: 「Activityクラスの基本を理解しよう!」 (6/8)”
http://libro99.appspot.com/index3?id=1023&page=6&label=android

この中では
private TextView text;
というものが宣言されています。

で、そのtextに
text = (TextView)this.findViewById(R.id.text);
でデザイン上のテキストビューを割り当てていると思うので

text.setText("こんにちは、" + s + "さん。");
でテキストの変更が可能になっているように思えます。

質問欄に掲載されたコードに載っていないだけかもしれませんが、
textの宣言と、割り当てを行えばよいのではないでしょうか?

Qエクセルで、2つの条件に合う結果を自動で入力したい

お願いします。

下記のような商品の価格一覧表があります。
A列に、商品名
B列に、大きさ
C列に、単価

別表で売り上げ入力していますが、
Aの商品名と、Bの大きさは、リストから選択入力していますが、
AとBの組み合わせでCの単価は決まっているのに、毎回リストから同じように選択して入力しています。
このCの単価を、AとBを入力したら、自動的に出てくるようにしたいです。

よろしくお願いします。

Aベストアンサー

「大きさ」が「商品を問わずに固定パターン」であるなら、
図のような単価表を別表で持っておくのもやりやすいですよ。

図の場合、C列には
    =VLOOKUP(A2,$E$2:$H$4,MATCH(B2,$E$1:$H$1),FALSE)
こんな式を入れてあります。

VLOOKUP関数はおなじみでしょうから割愛。
MATCH関数についての詳細は別途お調べ頂きたいのですが、
この場合は「検索値が、指定範囲の中の、何列目か」を見るために使っています。
なので、VLOOKUP関数の第3引数として活用できる、というカラクリです。

図の場合、
    =IF(COUNTA(A2:B2)=2,VLOOKUP(A2,$E$2:$H$4,MATCH(B2,$E$1:$H$1),FALSE),"")
とでもしてやれば、AB列のデータが揃ったときだけ表示してくれます。
(=ABどちらかが空白だったら、Cも空白。)


考え方の一つとして、参考までに。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング