ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

よろしくお願いします。

現在,このようなワークシート(とグラフ)があります。

セルA1に商品IDを入れる → その商品IDの売上が月ごとに表示される。

このワークシートにボタンを追加し,
クリックするたびに,このA1の数値が1ずつ増え,商品IDが変わっていくようなものを作りたいのですが,
その場合,どのような手順やマクロを書けばよいでしょうか?


エクセルにはある程度慣れているのですが,マクロについては詳しくありません。
ボタンの作成の仕方は分かるのですが,手元のマニュアル本を読んではみたものの,どのような式(?)を入力すればよいのか,
分からず,ご教示いただければ幸いです。

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

A 回答 (5件)

一部訂正。


誤:3.スピンボタンを左クリックし、「コントロールの書式設定」を選択。

正:3.スピンボタンを右クリックし、「コントロールの書式設定」を選択。
    • good
    • 3

マクロを使わない方法を。


ボタンではなく、値を▲▼で上下させるスピンボタンですが……。

Excel2003での操作です
1.メニューの表示→ツールバー で「フォーム」にチェックを入れる。
2.フォームのスピンボタンをシート上に追加し、サイズや位置を合わせる。
3.スピンボタンを左クリックし、「コントロールの書式設定」を選択。
4.リンクするセルの設定を$A$1に。最大値最小値等も必要なら設定。

以上、ご参考までに
「【エクセル】セルの数値を1増やすボタンを」の回答画像4
    • good
    • 2

標準モジュールを追加して下記の記述をコピペします。


ワークシート上にボタンを作成してマクロの登録をします。

Dim MyNum As Integer
Sub 数値の増加()

Range("A1").Select
MyNum = ActiveCell.Value
ActiveCell.Value = MyNum + 1

End Sub

セルA1の表示形式が文字列で,商品IDの先頭に数字の「0」がついていた場合,1増加したときに先頭の「0」が消えてしまいますので,このまま使えるか分かりませんが・・・。
    • good
    • 0

A1セルをダブルクリックで、A1の数値が1ずつ増える


シートタブを右クリック
コードの表示を選択
出てきたモジュールにマクロをコピペ
モジュールを閉じて
A1セルに商品IDを入力
A1セルをダブルクリックで数値が増えるのを確認して似てください

'ワークシートモジュールへ---------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$A$1" Or Range("A1").Value = "" Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
Target.Value = Target.Value + 1
Cancel = True
End Sub
'--------------------------------------------------

質問のボタンを使用していないので、興味が無ければ飛ばしてください
こんな方法もあるんだ程度で
    • good
    • 2

安直な一例です。



Sub ボタン1_Click()
Range("A1") = Range("A1") + 1
End Sub
    • good
    • 4

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

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

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

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

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

QExcelのマクロでボタンを押すと数が1足されるようにするには?

とあるイベントで
来客者の人数を調べたいと思いました。
紙に正の字を書いていってもいいのですが
折角なので、後のグラフをつくったりする作業がやりやすいように
PCで処理しようと思いました。
しかし、いちいち数をけして打ちなおしていくのは
あまりにも面倒です・・・
街灯の人数調査(?)の人がもってる
カウントできる機械のようなものも持っていませんし・・・

例えばマクロを使用し
ボタンを押すとセル内の数が1足されるように
設定したいのですがどうすればよいでしょう?
もしくは、そういったことは可能でしょうか。

ワンクリック(もしくはそれに準ずる簡単さ)で
カウントがとれればマクロでなくても構わないです。
Excelあまりいじったことがないので
教えていただければ幸いです。

また、マクロでそういったことができないのであれば
Excel以外でもカウントをとることができるものがあれば
合わせて教えていただけると嬉しいです。
よろしくおねがいします。

Aベストアンサー

Range("A1") = Range("A1") + 1

と書いたマクロを適当なボタンに登録して下さい。
A1に初期値を記入しておけば、ボタンをクリックする毎に1ずつ加算されます。

Q【エクセル関数】参照するセルを一定数ずつ増やす

関数で苦戦しています。

下記のようなIF関数を使用しています。
=IF(A1="","",A1)
参照するセルのA1の部分がA3,A5,A7…となるように
行数を一定数ずつ増やしたいのですが、やり方がわかりません。
どなたか教えてください。
説明が下手でごめんなさい。

Aベストアンサー

察しは付きますが、やはりもう少し詳しく説明が欲しいところです。

 =IF(OFFSET($A$1,(ROW(A1)-1)*2,0,1,1)="","",OFFSET($A$1,(ROW(A1)-1)*2,0,1,1))
または
 =IF(INDIRECT("A"&(ROW(A1))*2-1)="","",INDIRECT("A"&(ROW(A1))*2-1))
こんなでどうでしょう。


ROW関数は指定したセル(省略した場合、記述されているセル)の行番号を返す関数
(ROW関数は、ROW() と括弧の中を省略してもOKです)
OFFSET関数は基準のセルから指定しただけずらしたセルを参照する関数
INDIRECT関数は文字列で示されたセルを参照する関数
です。
IF関数は説明の必要はありませんよね。

ちなみに列番号を返すには COLUMN関数を使います。

QExcelで一部の数値だけ増やしていくデータは作れますか?

Excelで1つずつ増えていく数値の連続データを作るような形で
一部のセルの数値だけを連続データとして増やしていき
ほかの部分はまったくのコピーという形のファイルを作ることは可能でしょうか?

もしよろしければご教授願えれば幸いです。

Aベストアンサー

  A B C
1  1 2 3
2  2 2 3
3  3 2 3
4  4 2 3

このような感じでA列だけ増えて、BとCは増えない、ということでよろしいでしょうか?
一番簡単な方法は2、3行でも良いので途中まで入力して、A列最初の数字からC列最後の数字までをドラッグ。
そのままオートフィルタでご希望のところまで引っ張れば、エクセルが
法則を理解してAだけ増やす、BCはコピーにしてくれますよ。

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qエクセルで、選択範囲の数値全部に1を足す

エクセルなのですが、選択範囲の数値全部に1を足すにはどうしたらいいんでしたっけ?
うっかり失念してしまいました。宜しくお願いします!

Aベストアンサー

どこか空いているセルに1と入力し、そのセルをコピーします。
1を足したい範囲を選択し、「編集」>「形式を選択して貼り付け」で、演算の「加算」をチェックしてOKを押すとできます。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

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行までとしていますが、必要に応じて変更して下さい

QExcelのカウントアップボタンについて

エクセルで統計を取ろうと思い、クリックすると数字が増えるカウントアップボタンをD~K列それぞれ50セル、合計400セルに取り付けようと思うのですが、

自分の調べた方法ですととても面倒な作業になってしまうので、
もし簡略化できる方がいらっしゃいましたら教えて頂けませんでしょうか。

自分の調べた方法

Sub ボタンD4_Click()
Range("D4") = Range("D4") + 1
End Sub

上記のようなマクロを400個作り、それぞれのボタンに当てはめていく。

ボタンはそれぞれ数値の増やしたいセル上に配置しています。

オートフィルで簡単に増やせれば理想です。宜しくお願いします。

Aベストアンサー

こんばんは。

Application.Caller と TopLeftCell を組み合わせれば、プロシージャは
ひとつで済みそうですよ。

簡単なサンプルです。

ボタンは、カウントアップするセル内に配置し、その他のセルにまたがら
ないようにします。あとは、マクロの割り当てをし、フィルでコピー。

' // 標準モジュール
Sub CountUp()

  Dim r As Range
  
  On Error Resume Next
  Set r = ActiveSheet.Shapes(Application.Caller).TopLeftCell
  On Error GoTo 0
  
  If Not r Is Nothing Then
    r.Value = r.Value + 1
  End If
  
  Set r = Nothing

End Sub

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

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

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

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

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

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


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

人気Q&Aランキング