Excel VBA質問箱 IV

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

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


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

【16981】繰り返しの方法を教えて下さい。 さる 04/8/17(火) 23:52 質問[未読]
【16983】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/17(火) 23:57 回答[未読]
【16986】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 0:31 質問[未読]
【16988】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/18(水) 9:02 回答[未読]
【16989】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 9:52 質問[未読]
【16990】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/18(水) 10:07 回答[未読]
【16994】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 11:10 お礼[未読]
【16991】Re:繰り返しの方法を教えて下さい。 IROC 04/8/18(水) 10:10 回答[未読]
【16995】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 11:35 質問[未読]
【16996】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 11:45 質問[未読]
【16997】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/18(水) 12:39 発言[未読]
【16998】Re:繰り返しの方法を教えて下さい。 IROC 04/8/18(水) 13:08 回答[未読]
【16999】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 13:18 質問[未読]
【17000】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/18(水) 13:27 回答[未読]
【17001】Re:繰り返しの方法を教えて下さい。 Asaki 04/8/18(水) 13:34 回答[未読]
【17002】Re:繰り返しの方法を教えて下さい。 さる 04/8/18(水) 13:57 お礼[未読]

【16981】繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/17(火) 23:52 -

引用なし
パスワード
   セル範囲(A1:I1)の範囲の中で”1”があればJ列に○を表示します(CountIf関数)マクロ計算させたいのです。A:Iは変わりませんが行が空欄になるまで計算をさせたいのです。
何か良い案がありましたらご指導お願いいたします。

A B C D E F G H I J
2 2 3 5 2 1 2 3 2 ○
2 3 2 5 4 3 2 5 3
1 3 2 3 5 1 2 1 3 ○
3 2 3 5 3 2 4 2 3
3 5 3 2 4 2 3 3 4
2 1 1 1 2 1 2 1 5 ○
    ・
    ・ 
    ・
    ・

【16983】Re:繰り返しの方法を教えて下さい。
回答  Asaki  - 04/8/17(火) 23:57 -

引用なし
パスワード
   こんばんは。

直近のスレッド
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=16941;id=excel
に、データの最終行の求め方、ループ処理の仕方が記述してあります。
参考になりませんか?

なお、一般の数式をVBAから利用することも出来ます。
MsgBox WorksheetFunction.CountIf(Range("A1:A10"),1)

【16986】Re:繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/18(水) 0:31 -

引用なし
パスワード
   ▼Asaki さん:
>こんばんは。
>
>直近のスレッド
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=16941;id=excel
>に、データの最終行の求め方、ループ処理の仕方が記述してあります。
>参考になりませんか?
>
>なお、一般の数式をVBAから利用することも出来ます。
>MsgBox WorksheetFunction.CountIf(Range("A1:A10"),1)

ありがとうございます。
セル範囲があってどうやって変数しますか?わからないけど教えてくれませんか?

For i=2 To Range("A65536").End(XlUp).Row
  maru = WorkSheetFunction.CountIf("Ai:Ai")??,1)
 If  maru = 0 Then
  offset(1,10).Vaiue =" "
 ElseIf maru = 1 Then
  Offset(1,10).Vaiue ="○"
 End If

このコードでは正しいですか?教えて下さい
  

 

【16988】Re:繰り返しの方法を教えて下さい。
回答  Asaki  - 04/8/18(水) 9:02 -

引用なし
パスワード
   > このコードでは正しいですか?教えて下さい
まず、書いたプログラムを
メニューから デバッグ >> VBAProject のコンパイル
で、コンパイルしてください。
少なくとも、文法エラーは指摘されます。

横方向の右端セル位置は、1行目なら セルIV1からCtrl+← の操作で取得できます。
Range("IV1").End(xlToLeft).Column

>Offset(1, 10).Vaiue = " "
どこから Offest するのか、Offsetの前にセル(セル範囲)を指定する必要があります。
例えば、
Range("F1").Offset(1,1).Select
を実行してみて、どうなるか確認してみてください。

【16989】Re:繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/18(水) 9:52 -

引用なし
パスワード
   ▼Asaki さん:
ありがとうございます。
>横方向の右端セル位置は、1行目なら セルIV1からCtrl+← の操作で取得できます。
>Range("IV1").End(xlToLeft).Column

>>Offset(1, 10).Vaiue = " "
>どこから Offest するのか、Offsetの前にセル(セル範囲)を指定する必要があります。
>例えば、
>Range("F1").Offset(1,1).Select
>を実行してみて、どうなるか確認してみてください。

申し訳はありませんが説明不足ですみませんでした。もう一度説明させていただきます

 セル範囲(B1:J1)の範囲の中で”1”があればK列に○を表示するマクロ計算させたいのです。(A:J)は変わりませんが行が空欄になるまで計算をさせたいのです。
何か良い案がありましたらご指導お願いいたします。

A  B C D E F G H I J K
ss 2 2 3 5 2 1 2 3 2 ○
ks 2 3 2 5 4 3 2 5 3
sk 1 3 2 3 5 1 2 1 3 ○
ms 3 2 3 5 3 2 4 2 3
ai 3 5 3 2 4 2 3 3 4
as 2 1 1 1 2 1 2 1 5 ○
    ・
    ・ 
    ・
    ・
B:Jの範囲の中で”1”があればKセルに○を表示します。行ごとに繰り返ししていきます。

【16990】Re:繰り返しの方法を教えて下さい。
回答  Asaki  - 04/8/18(水) 10:07 -

引用なし
パスワード
   内容は分かっています。

No16986 で、お書きになっているもので、考え方は良いように思います。
B列からJ列と分かっているのなら
CountIf() の範囲は、
Range("B" & i & ":J" & i)
と書けばよいでしょう。

これまでのレスを、再度お読みください。

【16991】Re:繰り返しの方法を教えて下さい。
回答  IROC  - 04/8/18(水) 10:10 -

引用なし
パスワード
   Dim i As Long

  For i = 2 To Range("A65536").End(xlUp).Row
    If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 10)), 1) > 0 Then _
      Cells(i, 11).Value = "○"
  Next i

これで出来ると思います。

【16994】Re:繰り返しの方法を教えて下さい。
お礼  さる E-MAIL  - 04/8/18(水) 11:10 -

引用なし
パスワード
   ▼Asaki さん:
>内容は分かっています。
>
>No16986 で、お書きになっているもので、考え方は良いように思います。
>B列からJ列と分かっているのなら
>CountIf() の範囲は、
>Range("B" & i & ":J" & i)
>と書けばよいでしょう。
>
>これまでのレスを、再度お読みください。

ありがとうございます。いい勉強になりました。セル範囲は方法があって
大いに参考なりました。

【16995】Re:繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/18(水) 11:35 -

引用なし
パスワード
   ▼IROC さん:
ありがとうございました。一段に出来ましたので心から感謝しております。
もうひとつ聞きたいことがありましてどうかよろしくお願いします。

A B C D E F H I J K L  M  N  O  P  Q
sa 2 1 2 3 2 2 1 2 1 ○   ○  ★
ss 1 3 2 3 2 4 2 3 4 ○      ★ 
ms 4 3 2 2 3 2 3 4 3            ★
ke 3 2 2 1 2 3 3 5 3   ○     ★ 
wa 1 2 3 1 2 3 3 1 2 ○ ○ ○   ★
em 3 2 3 3 1 3 2 1 3   ○ ○   ★


B:D E:H I:Kの範囲で”1”があれば○を表示しますが

M列は○があればP列に★を表示します。

L列とN列は○があればO列に★を表示します。

L列だけ○があればO列に★を表示します。

L・M・N列は空欄があればQ列に★を表示します。

L・M・N列3つ○があればP列に★を表示します。

M・N列は2つ○があればP列も★を表示します。

それを繰り返ししますので何卒よろしくお願いします。

【16996】Re:繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/18(水) 11:45 -

引用なし
パスワード
   ▼IROC さん:
ありがとうございました。一段に出来ましたので心から感謝しております。
もうひとつ聞きたいことがありましてどうかよろしくお願いします。

A B C D E F H I J K L  M  N  O  P  Q
sa 2 1 2 3 2 2 1 2 1 ○   ○  ★
ss 1 3 2 3 2 4 2 3 4 ○      ★ 
ms 4 3 2 2 3 2 3 4 3            ★
ke 3 2 2 1 2 3 3 5 3   ○     ★ 
wa 1 2 3 1 2 3 3 1 2 ○ ○ ○   ★
em 3 2 3 3 1 3 2 1 3   ○ ○   ★


B:D E:H I:Kの範囲で”1”があれば○を表示しますが

M列は○があればP列に★を表示します。

L列とN列は○があればO列に★を表示します。

L列だけ○があればO列に★を表示します。

L・M・N列は空欄があればQ列に★を表示します。

L・M・N列3つ○があればP列に★を表示します。

M・N列は2つ○があればP列も★を表示します。

それを繰り返ししますので何卒よろしくお願いします。

追記
L:N列を表示しなくてもいいです。つまり
3つの範囲の中で ”1”=○と思えばいいです。
何か方法がありましたらよろしくお願いします。

【16997】Re:繰り返しの方法を教えて下さい。
発言  Asaki  - 04/8/18(水) 12:39 -

引用なし
パスワード
   IROC さんのご回答のマクロは、きちんと理解されていますか?
理解されていれば、簡単に応用できます。

分からないところがあれば、ヘルプで調べたり、再度質問するなりするべきでしょう。
なお、VBAのヘルプはインストールされていないかもしれませんので、
今後もマクロを利用されるのであれば、インストールすることをお勧めします。

【16998】Re:繰り返しの方法を教えて下さい。
回答  IROC  - 04/8/18(水) 13:08 -

引用なし
パスワード
   >分からないところがあれば、ヘルプで調べたり、再度質問するなりするべきでしょう。
>なお、VBAのヘルプはインストールされていないかもしれませんので、
>今後もマクロを利用されるのであれば、インストールすることをお勧めします。

私もAsakiさんの意見に同意です。

これまでにかなり質問されていますので、
このような基本的な内容は、
ご自分で調べて理解していただきたいと思います。


【16999】Re:繰り返しの方法を教えて下さい。
質問  さる E-MAIL  - 04/8/18(水) 13:18 -

引用なし
パスワード
   ▼Asaki さん:
>IROC さんのご回答のマクロは、きちんと理解されていますか?
>理解されていれば、簡単に応用できます。
>分からないところがあれば、ヘルプで調べたり、再度質問するなりするべきでしょう。
>なお、VBAのヘルプはインストールされていないかもしれませんので、
>今後もマクロを利用されるのであれば、インストールすることをお勧めします。

ありがとうございます。質問させていただきます。よろしくお願いします

Dim i As Long

 For i = 2 To Range("A65536").End(xlUp).Row
 If WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 4)), 1) > 0  Then   Cells(i, 12).Value = "○"
  If WorksheetFunction.CountIf(Range(Cells(i, 5), Cells(i, 7)), 1) > 0 Then   Cells(i, 12).Value = "○"
  If WorksheetFunction.CountIf(Range(Cells(i, 8), Cells(i, 10)), 1) > 0 Then   Cells(i, 13).Value = "○"
if Cells(i,12) ="",cells(i,13) ="",cells(i,14) ="" then Cells(i,17).value="★”
If Cells(i,12)="○",Cells(i,13)="",Cells(i,14)="" Then Cells(i,15).value="★”
If Cells(i,12)="○",Cells(i,13)="",Cells(i,14)="○" Then Cells(i,15).value="★”
If Cells(i,12)="○",Cells(i,13)="○",Cells(i,14)="" Then Cells(i,16).value="★”
If Cells(i,12)="",Cells(i,13)="○",Cells(i,14)="○" Then Cells(i,16).value="★”
If Cells(i,12)="",Cells(i,13)="○",Cells(i,14)="" Then Cells(i,16).value="★”
If Cells(i,12)="○",Cells(i,13)="○",Cells(i,14)="○" Then Cells(i,16).value="★”

Next i

実行したらコンパイルエラーになりましたのでおかしいところを教えて下さい。

【17000】Re:繰り返しの方法を教えて下さい。
回答  Asaki  - 04/8/18(水) 13:27 -

引用なし
パスワード
   ★印をつけるところの If文の書き方が間違っています。
複数の条件をつける場合は、
If 条件1 And 条件2 Then
  処理
End If
のようにします。

【17001】Re:繰り返しの方法を教えて下さい。
回答  Asaki  - 04/8/18(水) 13:34 -

引用なし
パスワード
   ○の数を、再度 CountIf() で数えても良いかもしれません。

【17002】Re:繰り返しの方法を教えて下さい。
お礼  さる E-MAIL  - 04/8/18(水) 13:57 -

引用なし
パスワード
   ▼Asaki さん:
指南してくれて助かりました。
エラーなくて実行して成功しました。
ありがとうございます。
またひとつに勉強なりました。

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