Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10183 / 13644 ツリー ←次へ | 前へ→

【23179】☆シート1の内容をシート2に反映させる方法を教えてください☆ YUKI 05/3/15(火) 16:33 質問[未読]
【23181】Re:☆シート1の内容をシート2に反映させる... Jaka 05/3/15(火) 16:59 発言[未読]
【23194】Re:☆シート1の内容をシート2に反映させ... YUKI 05/3/15(火) 20:33 質問[未読]
【23212】Re:☆シート1の内容をシート2に反映させ... Jaka 05/3/16(水) 12:56 回答[未読]
【23219】Re:☆シート1の内容をシート2に反映させ... YUKI 05/3/16(水) 15:36 質問[未読]
【23220】Re:☆シート1の内容をシート2に反映させ... Jaka 05/3/16(水) 15:49 回答[未読]
【23244】Re:☆シート1の内容をシート2に反映させ... YUKI 05/3/17(木) 8:48 お礼[未読]
【23246】文中間違いがありました。 Jaka 05/3/17(木) 9:16 発言[未読]
【23250】Re:文中間違いがありました。 YUKI 05/3/17(木) 11:00 お礼[未読]
【23182】Re:☆シート1の内容をシート2に反映させる... sa 05/3/15(火) 17:04 発言[未読]
【23195】Re:☆シート1の内容をシート2に反映させる... YUKI 05/3/15(火) 20:39 質問[未読]
【23206】Re:☆シート1の内容をシート2に反映させる... sa 05/3/16(水) 9:37 発言[未読]
【23208】Re:☆シート1の内容をシート2に反映させる... YUKI 05/3/16(水) 10:05 質問[未読]
【23209】Re:☆シート1の内容をシート2に反映させる... sa 05/3/16(水) 12:10 発言[未読]
【23218】Re:☆シート1の内容をシート2に反映させる... YUKI 05/3/16(水) 15:35 発言[未読]
【23245】Re:☆シート1の内容をシート2に反映させる... YUKI 05/3/17(木) 8:52 お礼[未読]

【23179】☆シート1の内容をシート2に反映させる方...
質問  YUKI  - 05/3/15(火) 16:33 -

引用なし
パスワード
   こんにちは 初心者です。今回大学の宿題で、VBAで資料を作ることになりました。
途中まではなんとか参考書を見ながらやったのですが、行き詰ってしまって。。。
できたら教えてください。
今作っているのはシート1で日にち、重さを入力し、それを
シート2で、重さの個数を計算するものです。ここが説明しずらいのですが、
シート1で   A列     B列       C列 
 1行目    2000年   12月1日     15kg 
 2行目          12月12日     20kg
 3行目          12月12日     20kg
 4行目    2001年   10月 5日    12kg
 5行目          10月 20日    13kg
  ・・・
といったようにシート1に入力するとシート2に重さの範囲が
       A列   B列     C列
1行目   2000年  20kg以上    2
2行目        19kg      0
3行目        18kg      0
4行目        17kg      0      ←これで表は固定されてる
5行目        16kg      0
6行目        15kg      1
7行目        14kg      0
8行目        13kg      0
           12kg      0
           11kg      0
           10kg以下    0
      

      2001年 20kg以上 
          19kg
          18kg 
          17kg
          〜
          10kg以下
とか入っていくわけです。説明わかりづらくてごめんなさい。
(重さは20kg以上〜10kg以下しかありません。)
困っているのはシート1に入力された内容をシート2に反映させること。
シート1の内容は固定していないのでどれくらい増えるかわかりません。西暦も増えるし、重さの入力も年ごとにばらばらの数が入力されます。
ですが、シート2は20kg以上〜10kg以下と固定しています。
まったく手がつかないので。。。どんな計算式を使ってやっていったらいいものやら、、
ちなみにシート2の見出しをクリックした瞬間に計算が行えるようにしようと思っています。シート1の2000年の内容はシート2の2000年の表の中に、シート1の2001年の内容はシート2の2000年の表の中に、、というようにしたいです。
説明が下手ですみません。できたらヒントや考え方でもいいので教えてください!

【23181】Re:☆シート1の内容をシート2に反映させ...
発言  Jaka  - 05/3/15(火) 16:59 -

引用なし
パスワード
   こんにちは。
エクセル関数だけで出来そうなんですが..。

>シート1の内容は固定していないのでどれくらい増えるかわかりません。西暦も増えるし、重さの入力も年ごとにばらばらの数が入力されます。
どんな感じで入力していくかは、解りますよね?
行挿入したりして増やしたりするのでしょうか?

各シートの「2000年」とかは、文字でしょうか?
15kg等も同じく文字なんでしょうか?
「10kg以下」と言う事なので文字列かと思いますが、こういう所をはっきりさせておかないと何もできません。
最後にシート2のC列にB列と同じ重さと言うか同じ物が、シート1に何個あるか解れば良いんですか?

【23182】Re:☆シート1の内容をシート2に反映させ...
発言  sa  - 05/3/15(火) 17:04 -

引用なし
パスワード
   EXCELの
[ツール] →[アドイン]で 
分析ツール-VBA をチェックして[OK]をクリックしてから

[ツール] →[分析ツール]でヒストグラムが選べるので
それをマクロに記録して利用すれば
できると思います

【23194】Re:☆シート1の内容をシート2に反映させ...
質問  YUKI  - 05/3/15(火) 20:33 -

引用なし
パスワード
   ▼Jaka さん
お返事ありがとうございます!こんなに早くお返事をいただけるとおもいませんでした。
なにぶんVBを勉強しはじめてまだ1ヶ月くらいで右も左もわからないので説明がたりなくって本当にごめんなさい!!
2000年は数字入力で15kg等の重さの表示は文字です。

>シート1の内容は固定していないのでどれくらい増えるかわかりません。西暦も増えるし、重さの入力も年ごとにばらばらの数が入力されます

これも説明が難しいのですが、シート1で更新ボタンと入力ボタンというのを
つくりました。入力ボタンを押すことで、ユーザーフォームが立ち上がり、日付と重さが入力できます。次に更新ボタンを押すことで、西暦が1つ上の西暦に+1をした状態でコピーがされるようにしました。その後ろに入力ボタンを押すことで日付と重さが入るように設定しています。

シート1で   A列     B列       C列 
 1行目    2000年   日付       重さ  ←ここがコピーされて
 2行目          12月1日     15kg 
 3行目          12月12日     20kg
 4行目          12月12日     20kg
 5行目    
 6行目    2001年   日付       重さ  ←日付の入力されたセルか
 7行目          10月 5日     12kg   ら1つ下がった場所に入力
 8行目          10月 20日    13kg    (End(xlUp)を使いま                            した)

>最後にシート2のC列にB列と同じ重さと言うか同じ物が、シート1に何個あるか解れば良いんですか?
これはその通りです!
関数をつかってできそうなんですか?シート1のB列C列がどれだけ増えるかわからないし、2000年の内容はシート2の2000年の中にとばさなければいけないし、、なんです。。
わかりずらいと思いますが お願いします!!

【23195】Re:☆シート1の内容をシート2に反映させ...
質問  YUKI  - 05/3/15(火) 20:39 -

引用なし
パスワード
   ▼sa さん

お返事ありがとうございます☆!
>EXCELの
>[ツール] →[アドイン]で 
>分析ツール-VBA をチェックして[OK]をクリックしてから
↑了解しました

>[ツール] →[分析ツール]でヒストグラムが選べるので
>それをマクロに記録して利用すれば
>できると思います
↑ヒストグラムをどうやって何に使っていいのかわからないです・・・(;_;)
 どうしたらいいでしょうか??

【23206】Re:☆シート1の内容をシート2に反映させ...
発言  sa  - 05/3/16(水) 9:37 -

引用なし
パスワード
   ▼YUKI さん:
>>[ツール] →[分析ツール]でヒストグラムが選べるので
>>それをマクロに記録して利用すれば
>>できると思います
>↑ヒストグラムをどうやって何に使っていいのかわからないです・・・(;_;)
> どうしたらいいでしょうか??
 ↑ヒストグラムのグラフでなく
  度数の表を作成できるのでそれを利用すればできるかと思ったのですが

【23208】Re:☆シート1の内容をシート2に反映させ...
質問  YUKI  - 05/3/16(水) 10:05 -

引用なし
パスワード
   ▼sa さん:
おはようございます☆
> ↑ヒストグラムのグラフでなく
>  度数の表を作成できるのでそれを利用すればできるかと思ったのですが

ごめんなさい。本当に何も知らなくって、、出来たら具体的に教えてもらえるとうれしいです。。。m(_ _)mペコ

【23209】Re:☆シート1の内容をシート2に反映させ...
発言  sa  - 05/3/16(水) 12:10 -

引用なし
パスワード
   シート1
A    B    C    D    E
1
2 2000年    12月1日    15        20
3    12月12日    20        19
4    12月12日    20        18
5 2001年    10月5日    12        17
6    10月20日    13        16
                15
                14
                13
                12
                11
                10

下記のソースで動くかやってみてください

Sub TEST()
Dim InP As String
Dim OnP As String
Dim end_row As Long
Dim s_row As Long
Dim e_row As Long
Dim Orow As Long
Dim DAI As String
Dim DAI_R As String

  Worksheets(1).Select
  end_row = Worksheets(1).Range("B65536").End(xlUp).Row

  Worksheets(1).Range("A1").End(xlDown).Select
  s_row = Selection.Row
  DAI = Cells(s_row, 1)
  
Do While s_row < end_row
  Selection.End(xlDown).Select
  e_row = Selection.Row - 1
  If e_row = 65535 Then e_row = end_row


  InP = "$C$" & s_row & ":$C$" & e_row
  OnP = "$B$" & 2 + Orow & ":$C$" & 14 + Orow
  DAI_R = "$A$" & 2 + Orow
  Worksheets(2).Range(DAI_R) = DAI
   Application.Run "ATPVBAEN.XLA!Histogram", Worksheets(1).Range(InP), _
    Worksheets(2).Range(OnP), Worksheets(1).Range("$E$2:$E$12"), False, _
    False, False, False

  Orow = Orow + 15
  s_row = e_row + 1
  Worksheets(1).Select
  Cells(s_row, 1).Select
  DAI = Cells(s_row, 1)
Loop

End Sub

【23212】Re:☆シート1の内容をシート2に反映させ...
回答  Jaka  - 05/3/16(水) 12:56 -

引用なし
パスワード
   こんにちは。
エクセル標準機能版。

準備

シート1の
2000年  日付  重さ ←C1を名前定義で、STR2000と名づける。
  ・
  ・
  ・         ←2001年重さの上のセルの同じく、LAT2000と名づける。
2001年  日付  重さ ←C?を名前定義で、STR2001と名づける。
  ・
  ・
  ・         ←2001年重さの上のセルの同じく、LAT2000と名づける。
2002年  日付  重さ ←C?を名前定義で、STR2002と名づける。
  ・
  ・
  ・         ←最後の年の場合は1行空きぐらいで、LAT2002と名づける。


LAT〇〇〇と名づけたセルの行を色をつけておき、データを追加する時は、色付けした行かその上の行に行を挿入して追加する。
名前付けしたセルの行は、絶対に削除しない事。
行が挿入されようが削除されようが、その時に応じたセル位置を返してくれます。

で、シート2
C1に
=COUNTIF(STR2000:LAT2000,B1)
2000年の20kg〜10kgまでフィル。

C14に
=COUNTIF(STR2001:LAT2001,B14)
2001年の20kg〜10kgまでフィル。

年度が増えたら同じように名前付けして、シート2に同じような関数を書けばいいと思います。

【23218】Re:☆シート1の内容をシート2に反映させ...
発言  YUKI  - 05/3/16(水) 15:35 -

引用なし
パスワード
   ▼sa さん:
ありがとうございます!ちょっとやってみます!!

【23219】Re:☆シート1の内容をシート2に反映させ...
質問  YUKI  - 05/3/16(水) 15:36 -

引用なし
パスワード
   ▼Jaka さん:
お返事ありがとうございます☆
LAT○○で定義するにはどうしたらいいでしょうか?ごめんなさい
本当にわからないことだらけでっ・・・・
できたら具体的な例などもらえるとうれしいです。

【23220】Re:☆シート1の内容をシート2に反映させ...
回答  Jaka  - 05/3/16(水) 15:49 -

引用なし
パスワード
   名前を付けたいセルを選択して

挿入 → 名前 → 定義 の名前欄に書くだけで、セルに名前をつけられます。

名前定義したセルを派のセルで参照するには、下記関数で参照できます。
= 定義した名前

【23244】Re:☆シート1の内容をシート2に反映させ...
お礼  YUKI  - 05/3/17(木) 8:48 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございました!昨日やってみたらちゃんと動いてくれました☆
本当にありがとうございました!!またわからないことがあったら教えてください(^-^)

【23245】Re:☆シート1の内容をシート2に反映させ...
お礼  YUKI  - 05/3/17(木) 8:52 -

引用なし
パスワード
   ▼sa さん
jakaさんとは違う方法で、あ!こんな風にもできるんだって関心しながら
やってました(^o^)ありがとうございました!!感謝感謝です!!
またわからないことがあったら教えてください!ちなみにまだまだわからないこと
だらけなんですけど もっと知識を深めたいです。
どういう風に勉強していったらいいでしょうか?今は大学の先生がつくってくれた
物をみながら作っているので今回のように 自分の考えて物をつくっていく!ってなると行き詰ってしまって・・・

【23246】文中間違いがありました。
発言  Jaka  - 05/3/17(木) 9:16 -

引用なし
パスワード
   すみません。
間違えている所がありました。

>シート1の
>2000年  日付  重さ ←C1を名前定義で、STR2000と名づける。
>  ・
>  ・
>  ・         ←2001年重さの上のセルの同じく、LAT2000と名づける。
>2001年  日付  重さ ←C?を名前定義で、STR2001と名づける。
>  ・
>  ・
>  ・         ←2001年重さの上のセルの同じく、LAT2000と名づける。
                              ↑
                             LAT2001です。

【23250】Re:文中間違いがありました。
お礼  YUKI  - 05/3/17(木) 11:00 -

引用なし
パスワード
   ▼Jaka さん:
 はい!大丈夫です!なんとなくそうかなって思ってました!!
ところでsaにも書いたのですが、まだまだわからないこと
だらけなんですけど もっと知識を深めたいです。
どういう風に勉強していったらいいでしょうか?今は大学の先生がつくってくれた
物をみながら作っているので今回のように 自分の考えて物をつくっていく!ってなると行き詰ってしまいます。。。

10183 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free