Excel VBA質問箱 IV

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

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


3896 / 13646 ツリー ←次へ | 前へ→

【59573】最新データを表示させるには? ひろりん 08/12/22(月) 23:41 質問[未読]
【59575】Re:最新データを表示させるには? かみちゃん 08/12/23(火) 9:42 発言[未読]
【59576】Re:最新データを表示させるには? ひろりん 08/12/23(火) 12:56 回答[未読]
【59577】Re:最新データを表示させるには? かみちゃん 08/12/23(火) 14:41 発言[未読]
【59582】Re:最新データを表示させるには? ひろりん 08/12/23(火) 22:56 回答[未読]
【59583】Re:最新データを表示させるには? かみちゃん 08/12/23(火) 23:05 発言[未読]
【59606】Re:最新データを表示させるには? ひろりん 08/12/24(水) 21:48 回答[未読]
【59607】Re:最新データを表示させるには? かみちゃん 08/12/24(水) 22:07 発言[未読]
【59608】Re:最新データを表示させるには? ひろりん 08/12/24(水) 23:53 回答[未読]
【59622】Re:最新データを表示させるには? かみちゃん 08/12/26(金) 1:44 発言[未読]

【59573】最新データを表示させるには?
質問  ひろりん  - 08/12/22(月) 23:41 -

引用なし
パスワード
   今まで見よう見真似で簡単なマクロを作成し活用していました。最近参考書を購入し勉強しているのですが、vbaの難しさに困窮しています。みなさんお忙しいとは思いますが、ご教示ください。

A列に最新データを表示させたい。
B列,C列,D列,E列は、経時的に入力したのちA列へ最新データ(数字)を表示したい。
各行(項目)は各列はバラバラに入力される。
(例えば、ある行(項目)はB列のみ、別の行(項目)はE列まで入力される)
上記内容が無理でしたら、A列に入力するたびにB列からE列まで順次入力される。
(関数で色々試しましたができませんでした。<知らないだけかも??>)

すみませんが、よろしくお願いします。

【59575】Re:最新データを表示させるには?
発言  かみちゃん E-MAIL  - 08/12/23(火) 9:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>A列に最新データを表示させたい。
>B列,C列,D列,E列は、経時的に入力したのちA列へ最新データ(数字)を表示したい。
>各行(項目)は各列はバラバラに入力される。
>(例えば、ある行(項目)はB列のみ、別の行(項目)はE列まで入力される)
>上記内容が無理でしたら、A列に入力するたびにB列からE列まで順次入力される。
>(関数で色々試しましたができませんでした。<知らないだけかも??>)

質問に具体性がないので、以下のようなシートイメージでしたいことをサンプルデータ
を交えて説明していただけませんか?

  A  B  C  D  E
1
2
3
4

たとえば、Excel2003まででしたら、IV列から左方向に値が入っているセルを取得
して、
A列に転記するという感じになるのではないでしょうか?
特定の行だけであれば、その操作を「マクロの記録」で記録することでできそうですね。

【59576】Re:最新データを表示させるには?
回答  ひろりん  - 08/12/23(火) 12:56 -

引用なし
パスワード
   かみちゃん さん

早速のご返信ありがとうございます。
まだまだヒヨッコですので色々教えてください。

以下のかみちゃん さんの内容に付け加えます。

>質問に具体性がないので、以下のようなシートイメージでしたいことをサンプルデータを交えて説明していただけませんか?
>
>  A  B  C  D  E
>1 12 12 
>2 15  9  20 15
>3 12 25  12
>4  9 22  36 25 9

A列にはB列〜E列までの最後の数字が転記される。
(B→C→D→Eと経時的に入力される)

A1はB1のデータが転記
A2はD2のデータが転記
A3はC2のデータが転記
A4はE4のデータが転記

700行程度になる予定です。

と言う具合ですが、かみちゃん さんの質問に対して回答になっているでしょうか?


>たとえば、Excel2003まででしたら、IV列から左方向に値が入っているセルを取得
>して、
>A列に転記するという感じになるのではないでしょうか?
>特定の行だけであれば、その操作を「マクロの記録」で記録することでできそうですね。

上記内容は分かる範囲で確認してみます。

すみませんが、よろしくお願いします

【59577】Re:最新データを表示させるには?
発言  かみちゃん E-MAIL  - 08/12/23(火) 14:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>質問に具体性がないので、以下のようなシートイメージでしたいことをサンプルデータを交えて説明していただけませんか?
>
>  A  B  C  D  E
>1 12 12 
>2 15  9  20 15
>3 12 25  12
>4  9 22  36 25 9

ありがとうございます。
内容は理解できました。

>>たとえば、Excel2003まででしたら、IV列から左方向に値が入っているセルを取得
>>して、
>>A列に転記するという感じになるのではないでしょうか?
>>特定の行だけであれば、その操作を「マクロの記録」で記録することでできそうですね。
>
>上記内容は分かる範囲で確認してみます。

それでは、たとえば、A2セルの値を手動で取得してみることを考えてみてください。
Excel2003までの環境を前提に書きます。

・IV2セルをアクティブにする
・Ctrlキーを押しながら、←キーを押す
・上記の例では、D2セルがアクティブになる
・アクティブになったセルをコピーする
・A2セルをアクティブにする
・A2セルに貼り付ける

以上でしたいことができませんか?

これをマクロでしたいならば、この操作を「マクロの記録」で記録してみてください。
そして、記録したコードを他の行の場合だとどのようにして修正するのかを考えます。

考え方がわからない場合は、記録できたコード(自分でできた範囲)を提示してみませんか?

【59582】Re:最新データを表示させるには?
回答  ひろりん  - 08/12/23(火) 22:56 -

引用なし
パスワード
   かみちゃん さん回答ありがとうございます。

自分の質問が分かりにくかったために誤解があったようです。

再度教えてください。

>>>質問に具体性がないので、以下のようなシートイメージでしたいことをサンプルデータを交えて説明していただけませんか?
>>
>>  A  B  C  D  E
>>1 12 12 
>>2 15  9  20 15
>>3 12 25  12
>>4  9 22  36 25 9
>
>>>たとえば、Excel2003まででしたら、IV列から左方向に値が入っているセルを取得
>>>して、
>>>A列に転記するという感じになるのではないでしょうか?

IV列からではなく、B2列から順次C2・・E2と入力され、常にA2列に最新データが表示されているという具合です。

>それでは、たとえば、A2セルの値を手動で取得してみることを考えてみてください。
>Excel2003までの環境を前提に書きます。
>
>・IV2セルをアクティブにする
>・Ctrlキーを押しながら、←キーを押す
>・上記の例では、D2セルがアクティブになる
>・アクティブになったセルをコピーする
>・A2セルをアクティブにする
>・A2セルに貼り付ける
>
>以上でしたいことができませんか?
>
>これをマクロでしたいならば、この操作を「マクロの記録」で記録してみてください。
>そして、記録したコードを他の行の場合だとどのようにして修正するのかを考えます。
>
>考え方がわからない場合は、記録できたコード(自分でできた範囲)を提示してみませんか?

上記内容についてマクロを組んでみましたが動作しません。
どうしたら良いのでしょうか?(初心者には難しいが少しずつ覚えていきます。)

Sub SelectCase_Test()
    Dim x As Integer
    x = B2

    Select Case x
      Case C2 > 1
        x = C2 '1.
      Case C2 > 1 And D2 > 1
        x = D2 '2.
      Case C2 > 1 And D2 > 1 And E2 > 1
        x = E2 '3.
      Case C2 > 1 And D2 > 1 And E2 > 1 And F2 > 1
        x = F2 '4.
      Case Else
        x = 0 '5.
    End Select
End Sub

【59583】Re:最新データを表示させるには?
発言  かみちゃん E-MAIL  - 08/12/23(火) 23:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>>>質問に具体性がないので、以下のようなシートイメージでしたいことをサンプルデータを交えて説明していただけませんか?
>>>
>>>  A  B  C  D  E
>>>1 12 12 
>>>2 15  9  20 15
>>>3 12 25  12
>>>4  9 22  36 25 9
>>
>>>>たとえば、Excel2003まででしたら、IV列から左方向に値が入っているセルを取得
>>>>して、
>>>>A列に転記するという感じになるのではないでしょうか?
>
>IV列からではなく、B2列から順次C2・・E2と入力され、常にA2列に最新データが表示されているという具合です。

「IV列から」と申し上げているのは、IV列から左方向に最初に値が入っているセル
という意味です。
つまり、B2、C2・・E2と値が入っていて、2行目のE列より右側に値が入っていない
場合、

>>・IV2セルをアクティブにする
>>・Ctrlキーを押しながら、←キーを押す

とすれば、E2がアクティブになりませんか?

>>それでは、たとえば、A2セルの値を手動で取得してみることを考えてみてください。
>>Excel2003までの環境を前提に書きます。
>>
>>・IV2セルをアクティブにする
>>・Ctrlキーを押しながら、←キーを押す
>>・上記の例では、D2セルがアクティブになる
>>・アクティブになったセルをコピーする
>>・A2セルをアクティブにする
>>・A2セルに貼り付ける
>>
>>以上でしたいことができませんか?
>>
>>これをマクロでしたいならば、この操作を「マクロの記録」で記録してみてください。

ここまでを記録はしてみたのですか?

>上記内容についてマクロを組んでみましたが動作しません。
>どうしたら良いのでしょうか?(初心者には難しいが少しずつ覚えていきます。)

今回の仕様では、Select Case は使いません。
しかも、使い方が誤っています。

まずは、上記の手作業による確認と、それの「マクロの記録」をしてみてください。

後は、複数行を繰り返して処理することを考えていくことになります。

【59606】Re:最新データを表示させるには?
回答  ひろりん E-MAIL  - 08/12/24(水) 21:48 -

引用なし
パスワード
   かみちゃん さん

できました。ありがとうございました。
初めてやってみて難しいことが分かりました。

以下のようになりました。

Sub Macro3()
'
  Range("B2:F2").Select
  Selection.End(xlToRight).Select
  Selection.Copy
  Range("B2").Select
  ActiveSheet.Paste
  '----------------------
  Range("B3:F3").Select
  Selection.End(xlToRight).Select
  Selection.Copy
  Range("B3").Select
  ActiveSheet.Paste
  '----------------------
  Range("B4:F4").Select
  Selection.End(xlToRight).Select
  Selection.Copy
  Range("B4").Select
  ActiveSheet.Paste
  '----------------------
End Sub


最後に下記内容について、700行まで実行させるにはどんなマクロを組めばいいですか?

>後は、複数行を繰り返して処理することを考えていくことになります。

よろしくお願いします。

【59607】Re:最新データを表示させるには?
発言  かみちゃん E-MAIL  - 08/12/24(水) 22:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>最後に下記内容について、700行まで実行させるにはどんなマクロを組めばいいですか?

その前に、本当に

>>・IV2セルをアクティブにする
>>・Ctrlキーを押しながら、←キーを押す
>>・上記の例では、D2セルがアクティブになる
>>・アクティブになったセルをコピーする
>>・A2セルをアクティブにする
>>・A2セルに貼り付ける

の手順を確認しましたか?
確認したうえで、マクロの記録で記録したコードなのですか?
提示されたコードは、ご自身で検証(実行)されましたか?

少なくとも、
>>> A列に最新データを表示させたい。
という要件は、満たされておらず、
B列に最新データが表示されていませんか?

提示されたコードを見る限り、

>>・IV2セルをアクティブにする
>>・Ctrlキーを押しながら、←キーを押す

という操作をしていないのも気になります。

提示されたコードで、
  Range("B2:F2").Select
  Selection.End(xlToRight).Select
としているのは、どういう理由からなのですか?

たとえば、B2、C2にデータが入っていて、D2にデータが入っていなくて、
E2にデータが入っている場合、最新のデータは、C2になってしまいますが、
それでいいのですか?

本題については、以下のような感じが一例です。

Sub Macro4()
 Dim lngRow As Long
 
 For lngRow = 2 To 700
  Range("B" & lngRow & ":F" & lngRow).Select

  '〜 省 略 〜

 Next
End Sub

【59608】Re:最新データを表示させるには?
回答  ひろりん E-MAIL  - 08/12/24(水) 23:53 -

引用なし
パスワード
   ▼かみちゃん さん こんばんは。

かみちゃんさんの下記の言うとおりでした。
何度も下記のとおりやっているのですが、今一つできません。
(センスがないのでしょうか?)
恥ずかしいですが、単純な質問をさせてください。(下記記載)

>>>・IV2セルをアクティブにする
>>>・Ctrlキーを押しながら、←キーを押す
>>>・上記の例では、D2セルがアクティブになる
>>>・アクティブになったセルをコピーする
>>>・A2セルをアクティブにする
>>>・A2セルに貼り付ける

>少なくとも、
>>>> A列に最新データを表示させたい。
>という要件は、満たされておらず、
>B列に最新データが表示されていませんか?
>
>提示されたコードを見る限り、
>
>>>・IV2セルをアクティブにする
>>>・Ctrlキーを押しながら、←キーを押す
>
>という操作をしていないのも気になります。

「IV2セルをアクティブにする」は、どうすればいいのですか?

>
>提示されたコードで、
>  Range("B2:F2").Select
>  Selection.End(xlToRight).Select
>としているのは、どういう理由からなのですか?
>
>たとえば、B2、C2にデータが入っていて、D2にデータが入っていなくて、
>E2にデータが入っている場合、最新のデータは、C2になってしまいますが、
>それでいいのですか?

上記の通りです。空欄は考えていませんでした。
実際には空欄はありえるので見直したいです。

>本題については、以下のような感じが一例です。
>
>Sub Macro4()
> Dim lngRow As Long
> 
> For lngRow = 2 To 700
>  Range("B" & lngRow & ":F" & lngRow).Select
>
>  '〜 省 略 〜
>
> Next
>End Sub

上記内容をクリアーにして、教えていただいたマクロを足していきます。
何度もすみませんが、よろしくお願いします。

【59622】Re:最新データを表示させるには?
発言  かみちゃん E-MAIL  - 08/12/26(金) 1:44 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>>>・IV2セルをアクティブにする
>>>>・Ctrlキーを押しながら、←キーを押す
>>
>>という操作をしていないのも気になります。
>
>「IV2セルをアクティブにする」は、どうすればいいのですか?

おうむ返しのようで申し訳ありませんが、「IV2セルをアクティブにする」が
わからないのであれば、「G2セルをアクティブにする」ということもわかりませんか?

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