Excel VBA質問箱 IV

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

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


225 / 3841 ページ ←次へ | 前へ→

【77947】Re:一定以上の数値に色づけをしたい
回答  yuto  - 16/2/15(月) 21:01 -

引用なし
パスワード
   ▼初心者A さん:
 要件が不明な点もありますが、参考までに以下のように
書いてみました。
 Excelのない環境で記述していますので、タイプミス等
ありましたら、すみません。

Sub Sample()
 Dim TargetRow As Long
 For TargetRow = 1 To 5
  With Cells(TargetRow, 2) ’ 本来は、Sheetもきちんと修飾した方が望ましいです。
  ' 数式の設定は、RC形式で記載。
   .FormulaR1C1 = "=SUM(RC[1]:RC[5])"
  ' 数式を残す必要がなければ、以下のようにも書けます。
  ' .Value = WorksheetFunction.Sum( .Offset(,1).Resize(,5).Value)
   If (.Value >= 5) Then
    .Interior.ColorIndex = 7
   End If
  End With
 Next TargetRow
End Sub
・ツリー全体表示

【77946】Re:一定以上の数値に色づけをしたい
発言  β  - 16/2/15(月) 19:14 -

引用なし
パスワード
   ▼初心者A さん:

う・・・ん・・・

データ、なにも A1 をさんしょうしなくても、じどうはんていはできるんですが
まぁ、A1 がデータ数だとしましょう。
>▼β さん:
>>▼初心者A さん:

う〜ん・・・・

データ件数は 何も A1 を参照しなくても自動把握は可能ですが、
まぁ、A1 がデータ件数だとしましょう。

質問しているのは、

アップしたコードを実行して、どんな不具合があったのですか

ということです。

まぁ、ループの最初で実行時エラーになったんだと思いますが。

マクロ内で、セルに数式を入れる場合、その数式は、セルに入力するまんまの文字列を
" で囲んで指定します。

セットすべき数式は、たとえば =SUM(C1:G1) という文字列ですよね。

"=SUM(Cells(" & i + 2 & ",1):Cells(" & i + 2 & ",7))"

これでは、たとえば

=SUM(Cells(3,1):Cells(3,7))

こんな数式文字列になります。なので、エクセルは、こんな名前、知らないよ!
ということで #NAME? と表示してますよね。
このエラー値になっているセルのValue を参照しようとすると実行時エラーになります。

もし数式を入れるなら

Cells(i, 2).Formula = "=SUM(C" & i & ":G" & i & ")"

ですね。

数式を入れず、VBA内でワークシート関数のSUMを使って合計した値をB列にセットすることも
もちろんできますが。

しかし、比べる数字が、6 になったり 8 になったりするのでしょ?
そのたびにマクロを修正するのですか?

コメントしたように、データ件数は自動で把握できますので、むしろ A1 には 
比べる数字をいれ、それを使ったほうがよろしいのでは?
・ツリー全体表示

【77945】Re:一定以上の数値に色づけをしたい
回答  初心者A  - 16/2/15(月) 18:54 -

引用なし
パスワード
   ▼β さん:
>▼初心者A さん:
>
>あっ!
>A1 の 5 は 【5行目まで】という 5 でしたか??
>で、比べる基準値の 5 は、固定なんですか?
>
>だとしたら、アップされたコードで、どこがどう具合悪かったのですか?

A1の5は変動します。説例で5としただけです。
A1はデーター件数でデーターの件数により他シートから
A1には1から100までのいずれかの数値が自動で入力されます。

比べる数値は、6であったり4であったり任意です。
説例で5としただけです。紛らわしくてすいません。
・ツリー全体表示

【77944】Re:一定以上の数値に色づけをしたい
発言  β  - 16/2/15(月) 17:15 -

引用なし
パスワード
   ▼初心者A さん:

あっ!
A1 の 5 は 【5行目まで】という 5 でしたか??
で、比べる基準値の 5 は、固定なんですか?

だとしたら、アップされたコードで、どこがどう具合悪かったのですか?
・ツリー全体表示

【77943】Re:一定以上の数値に色づけをしたい
発言  β  - 16/2/15(月) 17:07 -

引用なし
パスワード
   ▼初心者A さん:

なら

B1 に =SUM(C1:G1) をいれて、下にフィルコピー。
B列を選択して、条件付き書式 数式が =B1>=$A$1 書式で背景色を好きな色に。
・ツリー全体表示

【77942】一定以上の数値に色づけをしたい
質問  初心者A  - 16/2/15(月) 14:44 -

引用なし
パスワード
     A   B   C   D   E   F   G
1 5    4   1   2      1
2     5      1   2   1   1
3     3   2            1
4     3   1      1   1
5     8      2   2   3   1

--------------------------------------------------

質問
A1には任意のデーター件数が入ります--説例は5
C1からG5まではデーターです
各行のB列にはC列〜G列の合計が入ります
B列合計が5以上のセルに色付けたい

Sub Cells色付() 'B列が5以上になった場合はセルに色付注意----
Dim h As Integer, i As Integer

h = Cells(1, 1)
For i = 1 To h
Cells(i , 2).FormulaR1C1 = "=SUM(Cells(" & i + 2 & ",1):Cells(" & i + 2 & ",7))"
If Cells(i , 2) > 5 Then
  Cells(i , 2).Interior.ColorIndex = 7
End if
Next
End Sub
・ツリー全体表示

【77941】Re:条件付き書式で塗潰したセルに入力値...
発言  もょもと  - 16/2/15(月) 10:29 -

引用なし
パスワード
   申し訳ございません。
どちらのサイトで質問したら良いか分からず、
マルチポストとなってしまいました。
引き続き宜しくお願い致します。

▼β さん:
>▼もょもと さん:
>
>質問箱IVは、マルチポストを許容しています。
>また、エクセルの学校もマルチポストを容認しています。
>
>しかしながら、それぞれの掲示板で、マルチポストに関するルールというか扱い方が明記されていますので
>目を通しておいてください。質問箱IVでは、上部の
>
>【本サイトの基本方針をまとめました。こちら をご一読ください。】の「こちら」をクリックするとでてきますし
>エクセルの学校も 【初めての方へ】-->【初めての方へ(詳細版)】をクリックするとでてきます。
>
>それらを読んだうえで、それぞれの掲示板に定められている適切な措置をとってくださいね。
・ツリー全体表示

【77940】Re:条件付き書式で塗潰したセルに入力値...
発言  β  - 16/2/15(月) 9:01 -

引用なし
パスワード
   ▼もょもと さん:

質問箱IVは、マルチポストを許容しています。
また、エクセルの学校もマルチポストを容認しています。

しかしながら、それぞれの掲示板で、マルチポストに関するルールというか扱い方が明記されていますので
目を通しておいてください。質問箱IVでは、上部の

【本サイトの基本方針をまとめました。こちら をご一読ください。】の「こちら」をクリックするとでてきますし
エクセルの学校も 【初めての方へ】-->【初めての方へ(詳細版)】をクリックするとでてきます。

それらを読んだうえで、それぞれの掲示板に定められている適切な措置をとってくださいね。
・ツリー全体表示

【77939】任意のセル値を消したら指定マクロ実行し...
質問  もょもと  - 16/2/15(月) 1:01 -

引用なし
パスワード
   1)任意セルに値を入力するとロックさせたい。
2)ロックした後に編集したい場合はボタンを押して
別のイベントを起動してロック解除したい。
3)ロック解除後は手動で上記2)とは別のボタンを押して
イベントを起動し、再ロックしたい。

1)〜3)の動作確認は出来ているのですが、
3)の手動で再ロックするのを忘れてしまいがちなため
2)でロック解除した後に任意のセル値を消した時点で
3)が自動起動するようにしたいです。

連続投稿して申し訳ございませんが、
宜しくお願い致します。
・ツリー全体表示

【77938】指定セル条件により別シートにコピーした...
質問  もょもと  - 16/2/15(月) 0:47 -

引用なし
パスワード
   [Sheet1]
   A    B    C
1 りんご  購入  100円
2 みかん  交換  120円
3 ばなな  購入  150円

[Sheet2]
   A    B    C
1 なし   廃棄  130円
2 ぶどう  返品  200円
3 りんご  購入  100円
4 ばなな  購入  150円

Sheet1のB1に「購入」が選択され、必要箇所を
入力(必要箇所はセルを変色し、変色したセルを
全て入力しないと保存不可:別投稿で質問中)し、
保存すると、Sheet1のA1、B1、C1のデータが
同ファイル上のSheet2のデータが入力されて
いない行に各々コピペされるようにしたいです。
・ツリー全体表示

【77937】条件付き書式で塗潰したセルに入力値が無...
質問  もょもと  - 16/2/15(月) 0:21 -

引用なし
パスワード
     A     B    C    D
1 りんご  
2 みかん
3 ばなな

[条件付き書式設定]
B1はA1の値が「りんご」、「ばなな」の時にセルが変色
C1はA1の値が「みかん」、「ばなな」の時にセルが変色
D1はA1の値が「りんご」の時にセルが変色

[やりたい事]
A1に「りんご」を選択した場合、変色したB1とD1はセル選択可能とし
変色していないC1はセル選択不可とし、変色したセルを全て
入力しないとメッセージを表示し、保存不可にしたいです。

また、A1が「りんご」以外にも「みかん」や「ばなな」も
選択できるようにして、「みかん」を選んだ時は変色した
C1だけセル選択可能とし、変色したセルを入力しないと
保存不可にしたいです。
2行目以降も同様としたいです。

よろしくお願いします。
・ツリー全体表示

【77936】Re:VBAによるデータ抽出等について
お礼  株太郎  - 16/2/14(日) 16:33 -

引用なし
パスワード
   ▼マナ さん:

お手数をお掛けしています。

β さんのアドバイスのところでも、私が誤っていたのですが、
 
色番号のところを再度見直して、今回、マナさんから頂いたものを実行、成功しました。

今回、お二方のアドバイスにより、やりたいことが簡潔に出来るのは、本当にありがたいことです。
また、異なった記述方法をアドバイス頂いたことにより、知識の幅が広がりました。

色々とありがとうございました。
・ツリー全体表示

【77935】Re:VBAによるデータ抽出等について
発言  マナ  - 16/2/14(日) 15:36 -

引用なし
パスワード
   ▼株太郎 さん:

解決したようなので、時間に余裕があればご検討下さい。

>
>エラー”400”

ごめんなさい。原因がわかりません。
ステップ実行でどこでエラーになる確認できますか。
(繰り返し処理をしていますので、データ量を少なくしないと大変かも)
>

>
>>4)H列が空白の行をオートフィルタで抽出し削除
>
>を 赤 と 青 の間のデータ個数を計算できるのでしょうか?

H列に色付きセルの行番号をセットしています。
この行番号の差がセルの数になりませんか?

わかりにくそうなところを少し修正してみました。

Sub test2()
  Dim i As Long
  
  Sheets("Sheet1").Copy  '★データシート
  
  With ActiveSheet.Cells(1).CurrentRegion.Columns("A:H")
    .Cells(1, "H").Value = "作業列(行番号)"
    For i = 2 To .Rows.Count
      If .Cells(i, "D").Interior.Color = vbRed Then  '★高値の色
        .Cells(i, "E").ClearContents
        .Cells(i, "H").Value = i
      ElseIf .Cells(i, "E").Interior.Color = vbBlue Then '★安値の色
        .Cells(i, "D").ClearContents
        .Cells(i, "H").Value = i
      End If
    Next

    .AutoFilter
    .AutoFilter Field:=8, Criteria1:="="
    .Offset(1).EntireRow.Delete
    .AutoFilter
    .Interior.ColorIndex = xlNone

    If .Rows.Count > 1 Then
      With .Columns("I").Resize(.Rows.Count - 1).Offset(1)
        .Formula = "=IF(H1=""作業列(行番号)"","""",H2-H1)"
        .Value = .Value
      End With
    End If
    .Cells(1, "I").Value = "セルの個数"
    .Columns("F:H").Delete
    .Columns("B:C").Delete
    .Cells(1).Select
  End With
      
End Sub
・ツリー全体表示

【77934】Re:VBAによるデータ抽出等について
お礼  株太郎  - 16/2/14(日) 15:30 -

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

お手数をお掛けしています。
 
色番号のところを再度見直して、誤りがあり修正して実行、成功しました。

今回、アドバイス頂いたことにより、データ抽出が非常に簡単に行えるように
なり、感謝しております。


ありがとうございました。
・ツリー全体表示

【77933】Re:VBAによるデータ抽出等について
発言  β  - 16/2/14(日) 14:09 -

引用なし
パスワード
   ▼株太郎 さん:

ちなみにアップされた元データは A1から始まっているという前提です。
・ツリー全体表示

【77932】Re:VBAによるデータ抽出等について
発言  β  - 16/2/14(日) 14:07 -

引用なし
パスワード
   ▼株太郎 さん:

色付けせル判定の意味は理解しました。

>>★印のところは、シート上に塗ってある実際の色番号に直してください。
>の部分は、色番号に直しました。

の上で

>最初に頂いたVBAのコードを実行しましたが、sheet2への抽出はされませんでした。

でしょうか?
実際の色番号とコード内色番号が同じなら、ちゃんと抽出されるはずですが?

ちなみに赤と青の色番号を教えてください。

>やりたいことの実現は難しそうでしょうか?

いやぁ・・・
アップしたコードで実現するはずなんですが・・・
・ツリー全体表示

【77931】Re:VBAによるデータ抽出等について
回答  株太郎  - 16/2/14(日) 13:25 -

引用なし
パスワード
   ▼マナ さん:

アドバイスありがとうございます。

さきほどの修正事項を反映させて、頂いたVBAを実行いたしましたが、エラー”400”いうのが出ました。

それと、理解力が乏しくてご迷惑をお掛けしてしまいますが、

>4)H列が空白の行をオートフィルタで抽出し削除

を 赤 と 青 の間のデータ個数を計算できるのでしょうか?

お手数をお掛けいたしますが、よろしくお願いいたします。
・ツリー全体表示

【77930】Re:VBAによるデータ抽出等について
回答  株太郎  - 16/2/14(日) 13:07 -

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

アドバイスありがとうございます。
最初に頂いたVBAのコードを実行しましたが、sheet2への抽出はされませんでした。

注意いただいていました、
>★印のところは、シート上に塗ってある実際の色番号に直してください。
の部分は、色番号に直しました。

その後、ご質問頂いた内容ですが、
分析する時間軸はいろいろとありまして、仰るように1日もあれば、5分、15分、60分等、分析する人の裁量で変化します。

それで、色つきのセル(高値欄 赤【ピーク】、安値欄 青【ボトム】)は、複雑な計算の結果、高値欄であれば、前回のボトムからみて、計算上、今回が最もピークな価格を赤い色でセルを色付けしていています。
安値欄はその逆で、前回ピークからみて、計算上、今回が最もボトムな価格を青い色でセル色付けして識別しています。

同じ価格であっても、複雑な計算上、最もピーク、最もボトム解答しなければ、色付けして識別することはありません。

分かりにくくて申し訳けありません。

色付けされたセルが重要なポイントとなるため、やりたいことの内容が、色付けされたセルを起点としたデータ抽出を発想しました。

やりたいことの実現は難しそうでしょうか?

お手数をお掛けいたしますが、よろしくお願いいたします。
・ツリー全体表示

【77929】Re:VBAによるデータ抽出等について
発言  マナ  - 16/2/14(日) 12:56 -

引用なし
パスワード
   ▼β さん:
いつもありがとうございます。

>ところで、きっと D列が赤でE列が青なんでしょうかね。

そうでした。
ついでに修正です。

>.Interior.Color = xlNone
  ↓
 .Interior.ColorIndex = xlNone
・ツリー全体表示

【77928】Re:VBAによるデータ抽出等について
発言  β  - 16/2/14(日) 9:36 -

引用なし
パスワード
   ▼株太郎 さん:

ところで、興味本位の質問で恐縮ですが、コメントしましたように、株式は詳しくありません。
私のような素人の理解では、始値    高値    安値    終値    出来高 といったものを
1日のスパンでイメージするんですが、アップされたデータは、そのスパンが5分間なんですよね。
(その時刻までの5分なのか、その時刻からの5分なのかはわかりませんけど)

そうした場合、なぜ2行目(最初のデータ)の 19070 が 赤(高値)ではないのかな?
なぜ、4行目(3つめのデータ)の 19050 が青(安値)ではないのかなと。

よければ、そのあたりのルールを教えていただけませんか。

それによっては、色を頼りの処理ではなく、金額の比較による高値、安値の抽出とリスティングが
可能になりそうな感じがするのですが。
・ツリー全体表示

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