こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルでセルをクリックしてプルダウンのようなもの

エクセルで、合計数字を表示するセルをクリックしてプルダウンのようなものを出せて、そこに数字を入力し、その合計をセルに返すことはできるのでしょうか?

........A...............B.....
1...商品......販売数
2.....あ............140
3.....い..........1000
4.....う.............300

上の様に見える表を完成させたいのですが、例えばB列の商品"あ"の販売数を、
B2をクリックするかなにかして、プルダウンで

3/15 A社 50
2/06 B社 10
4/10 C社 80

と入力し、その合計数をB2に表示させたいのです
このような事はエクセルでできますでしょうか?

入力する”3/15 A社 50”ののような項目は1品目で最大30項目くらいになりますので、
あくまで行数や列数を増やしたりしたくないもので、入力サブシート?的なものに入力し、
合計数を目的のセルへ表示したいのです

VBなどあまりいじった事ないのですが、お分かりの方がおられましたらご教授願えませんでしょうか
どうぞ宜しくお願い致します

投稿日時 - 2012-04-06 01:38:56

QNo.7405181

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

いまだにExcel2002を使っているので操作が違ったらごめんなさい


VBAを使わなくても、プルダウンを表示するだけなら

セルを選択して、メニューの[データ]->[入力規制]を開いて、
[設定]タブの[入力値の種類]を[リスト]に変更

元の値に選ばせるデータ一覧を範囲指定すればプルダウン選択はできます。

条件によってプルダウンの値を変える場合はIF文を駆使すれば何とかなったりならなかったり

投稿日時 - 2012-04-06 18:40:07

ANo.3

No.2です!
たびたびごめんなさい。

3/15 A社 50
2/06 B社 10
4/10 C社 80
と表示させ・・・
の部分を見逃していました。

Sheet1のD列以降にSheet2のデータを表示させるとします。
もう一度コードを載せてみますので、前回のコードはすべて削除して
↓のコードをコピー&ペーストしてみてください。

'↓の行から
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
On Error Resume Next
Dim i As Long
Dim str As String
Dim ws As Worksheet
Set ws = Worksheets("Sheet2")
i = Target.Row
If Cells(i, 1) <> "" Then
Cancel = True
str = Cells(i, 1)
ws.Columns("A:D").AutoFilter field:=2, Criteria1:=Cells(i, 1)
ws.Columns("A:D").Copy Destination:=Cells(1, 4)
Target = WorksheetFunction.SumIf(ws.Columns(2), Cells(i, 1), ws.Columns(4))
End If
ws.Select
Selection.AutoFilter
Worksheets("Sheet1").Select
Cells(i, 2).Activate
End Sub 'この行まで

今回もSheet1のB列セルでダブルクリックです。
※ 外していたらごめんなさいね。m(_ _)m

投稿日時 - 2012-04-06 09:55:39

ANo.2

こんにちは!
ご希望通りになるかどうかわかりませんが・・・
セルをダブルクリックする場合の一例です。

↓の画像のようにSheet2にデータがあるとします。

画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストして、Sheet1のB列をダブルクリックしてみてください。

'↓の行から
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
On Error Resume Next
Dim ws As Worksheet
Set ws = Worksheets("Sheet2")
If Target.Offset(, -1) <> "" Then
Target = WorksheetFunction.SumIf(ws.Columns(2), Target.Offset(, -1), ws.Columns(4))
End If
Cancel = True
End Sub 'この行まで

※ Sheet2の配置はこちらで勝手に作っていますので、実状と異なる場合は全く機能しません。
(列番号等・・・)

参考になりますかね?m(_ _)m

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2012-04-06 09:39:12

ANo.1

VBEではありませんが添付図参照して以下試してください

このシート名を"商品別集計"に変更、シート2の名前を"あ明細"に変更、以下"い"も同様

”あ”シートを商品ごとの明細票を入力し、合計セル C8に集計する

合計セル C8を右クリック し”コピー”

”商品別集計”シートに戻り
B2に”形式を選択して貼り付け” →”リンク貼り付け”
 (これで”あ”シートの合計がここに反映される)

"商品別集計"B2セルを選択し
右クリック →ハイパーリンク  →ブックマーク →"あ"シート指定 →OK
すると文字色がかわる、以後セルを選択すると”あ”に飛ぶ
集計に戻るにはシート名をクリックする、


これでいかがでしょうか

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2012-04-06 07:19:15

あなたにオススメの質問