Excel VBA質問箱 IV

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

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


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

【59142】数字を判別したいのですが smasa 08/11/30(日) 14:59 質問[未読]
【59145】Re:数字を判別したいのですが mos 08/11/30(日) 16:14 回答[未読]
【59159】Re:数字を判別したいのですが smasa 08/11/30(日) 21:45 回答[未読]
【59152】Re:数字を判別したいのですが ponpon 08/11/30(日) 19:45 発言[未読]
【59158】Re:数字を判別したいのですが smasa 08/11/30(日) 21:42 回答[未読]
【59160】Re:数字を判別したいのですが ponpon 08/11/30(日) 21:56 発言[未読]
【59161】Re:数字を判別したいのですが smasa 08/11/30(日) 23:24 質問[未読]
【59164】Re:数字を判別したいのですが smasa 08/11/30(日) 23:44 発言[未読]
【59165】Re:数字を判別したいのですが ponpon 08/11/30(日) 23:54 発言[未読]

【59142】数字を判別したいのですが
質問  smasa  - 08/11/30(日) 14:59 -

引用なし
パスワード
   はじめまして。smasaと申します。
1点質問があります。
以下のように、
複数の数字を各セルに入力するのですが、
重複した数字をグループとして判別したいのです。

No.
1     →グループA →1,2,3,4
1 2    →グループA →1,2,3,4
1 2 3  →グループA →1,2,3,4
3 4    →グループA →1,2,3,4
5     →グループB →5
6 7    →グループC →6,7

この例だと、1と2と3と4は同じグループというようにです。
初心者なのですが、
どなたか教えていただけますでしょうか?
よろしくお願いいたします。

【59145】Re:数字を判別したいのですが
回答  mos  - 08/11/30(日) 16:14 -

引用なし
パスワード
   >初心者なのですが、

初心者なら、まず 検索機能で過去レスを
読んで下さい

質問するよりも、絶対に早く解決します

それでも、わからないなら
case ステートメントを使ってみては?

【59152】Re:数字を判別したいのですが
発言  ponpon  - 08/11/30(日) 19:45 -

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

>以下のように、
>複数の数字を各セルに入力するのですが、
 入力する数字はスペースで区切られているのでしょうか?
 4 5となっているものや
 5 4 3となっているもの
 つまりグループをまたがったり、大きい方からならんでいるのもは
 ないのでしょうか?
 また、どの列にどの行から入力されているのでしょうか?

>重複した数字をグループとして判別したいのです。
 判別した後どうするのでしょう?
>
> No.
> 1     →グループA →1,2,3,4
> 1 2    →グループA →1,2,3,4
> 1 2 3  →グループA →1,2,3,4
> 3 4    →グループA →1,2,3,4
> 5     →グループB →5
> 6 7    →グループC →6,7
>

上記の例がたとえばA列の1行目から入力されているとして、
以下のような感じでできると思います。 
シートは、アクティブシートで考えています。 

Sub test()
  Dim r As Range
 
  For Each r In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    Select Case Right(r.Value, 1)
     Case Is <= 4
      MsgBox "グループA"
     Case Is = 5
      MsgBox "グループB"
     Case Is <= 7
      MsgBox "グループC"
    End Select
  Next
End Sub

【59158】Re:数字を判別したいのですが
回答  smasa  - 08/11/30(日) 21:42 -

引用なし
パスワード
   ▼ponpon さん:
返信ありがとうございます。
すみません、説明がかなり不足しておりました。。

  F  G H I J K ... M N
5 12  1         A 1,2,3,4
6 21  2 3       A 1,2,3,4
7 30  5         B 5,6
8 11  3 4       A 1,2,3,4
9 6  1 2       A 1,2,3,4
10 2  5 6       B 5,6


> 入力する数字はスペースで区切られているのでしょうか?
上記のようにG〜Kの各セルに入力されています。

> 4 5となっているものや
> 5 4 3となっているもの
> つまりグループをまたがったり、大きい方からならんでいるのもは
> ないのでしょうか?
G列から、小さい数字の順に並べます。
9行目のように、グループをまたぐ場合があります。

> 判別した後どうするのでしょう?
グループ別に分けた後、そのグループのF列の数字SUMIFで足し、別のセルに表示します。

G〜K列に行方向に数字を入力し、
1つでも数字が重なっていたら、
それを1つのグループとしてM列にAグループ、Bグループのように表示したいのです。

ここ何ヶ月か悩んでおり、先に進めないのです。。
すみませんが、よろしくお願いいたします。

【59159】Re:数字を判別したいのですが
回答  smasa  - 08/11/30(日) 21:45 -

引用なし
パスワード
   ▼mos さん:
返信ありがとうございます!
過去レスを参考にさせていただきます。

【59160】Re:数字を判別したいのですが
発言  ponpon  - 08/11/30(日) 21:56 -

引用なし
パスワード
   ▼smasa さん:
私にできるかどうかわかりませんが、仕様がはっきりしないので・・

>  F  G H I J K ... M N
> 5 12  1         A 1,2,3,4
> 6 21  2 3       A 1,2,3,4
> 7 30  5         B 5,6
> 8 11  3 4       A 1,2,3,4
> 9 6  1 2       A 1,2,3,4
>10 2  5 6       B 5,6
>
>
>> 入力する数字はスペースで区切られているのでしょうか?
>上記のようにG〜Kの各セルに入力されています。

G〜K列にすべてではないですよね?

>> 4 5となっているものや
>> 5 4 3となっているもの
>> つまりグループをまたがったり、大きい方からならんでいるのもは
>> ないのでしょうか?
>G列から、小さい数字の順に並べます。
  小さい数字の順なら最高で4つ(1,2,3,4)ですね?

>9行目のように、グループをまたぐ場合があります。

> 9 6  1 2       A 1,2,3,4
1,2でまたがっているようには思えませんが・・・
また、1,2,3,4・・Aグループ
   5・・・・・Bグループ
   6,7・・・・Cグループではなかったのですか??     

はじめのものと例示が違いますが・・・・?

>G〜K列に行方向に数字を入力し、
>1つでも数字が重なっていたら、

重なっていたらというのは?何が何と重なるのですか?

【59161】Re:数字を判別したいのですが
質問  smasa  - 08/11/30(日) 23:24 -

引用なし
パスワード
   ▼ponpon さん:
ご面倒おかけしてすみません、
もっと詳しく説明します。

結果的には、G5〜K11までの範囲にある数字を
以下のようにN列に表示したいのです。

>>   F  G H I J K ... M  N
>> 5  12  1          1,2,3,4
>> 6  21  2 3        1,2,3,4
>> 7  30  5          5,6
>> 8  11  3 4        1,2,3,4
>> 9  6  1 2        1,2,3,4
>>10  2  5 6        5,6 
>>11

行方向は空白セルでとまるようにします。(例の場合は11まで)

もともとは下のように数字が入力されています。
(1番左は行番号です)

          列
>>   F  G H I J K ... M N
>> 5  12  1        
>> 6  21  2 3       
>> 7  30  5        
>> 8  11  3 4       
>> 9  6  1 2       
>>10  2  5 6      

G5の1から、表の上から順番に、範囲内に同じ数字がないかどうか調べます。
たとえば、G5の1という数字はG9にも入力されています。
ですから、行5と行9は同じグループ。
次に、G6の2という数字はH9にも入力されていますので、
行5と行9と行6は同じグループ。
次に、H6の3という数字はG8にもあります。
行5、行9、行6、行8は同じグループ。
次にH8の4は他に入力されていません。
そこで、各グループの数字を取り出し、重複しないように
N列に以下のように入力されるようにします。

          列
>>   F  G H I J K ... M N
>> 5  12  1          1,2,3,4
>> 6  21  2 3         1,2,3,4
>> 7  30  5        
>> 8  11  3 4         1,2,3,4
>> 9  6  1 2         1,2,3,4
>>10  2  5 6

次にG7の5という数字はG10にもあります。
ですので、行7と行10は同じグループで、
N列の7と10には5,6と入力されるようにしたいのです。

すみません、最初の質問とはかなり説明が違うと思います。
申し訳ありません。

関数等を使ってやってみていますが、
なかなかうまくいきません。
お考えをいただきたく、お願いいたします。

【59164】Re:数字を判別したいのですが
発言  smasa  - 08/11/30(日) 23:44 -

引用なし
パスワード
   すみません。
59162の方に、
同じ質問を投稿しました。
回答がありましたら、そちらの方にお願いします。

【59165】Re:数字を判別したいのですが
発言  ponpon  - 08/11/30(日) 23:54 -

引用なし
パスワード
   ▼smasa さん:
>もともとは下のように数字が入力されています。
>(1番左は行番号です)
>
>          列
>>>   F  G H I J K ... M N
>>> 5  12  1        
>>> 6  21  2 3       
>>> 7  30  5        
>>> 8  11  3 4       
>>> 9  6  1 2       
>>>10  2  5 6      
>
>G5の1から、表の上から順番に、範囲内に同じ数字がないかどうか調べます。
>たとえば、G5の1という数字はG9にも入力されています。
>ですから、行5と行9は同じグループ。
>次に、G6の2という数字はH9にも入力されていますので、
>行5と行9と行6は同じグループ。
>次に、H6の3という数字はG8にもあります。
>行5、行9、行6、行8は同じグループ。
>次にH8の4は他に入力されていません。
>そこで、各グループの数字を取り出し、重複しないように
>N列に以下のように入力されるようにします。

ここの説明がよくわかりません。
結局、
まだ、よく仕様がわかりませんが・・
G5から横に見ていって1か2か3か4の数字であれば、1,2,3,4のグループ
          5か6であれば、5,6のグループということですか? 

以下マクロで結果としては、提示されたようになってますが・・・

Sub test()
  Dim r As Range
  Dim myVal As String
 
  For Each r In Range(Cells(5, 7), Cells(5, 7).End(xlDown))
    For i = 0 To 4
     If r.Offset(, i).Value <> "" Then
       myVal = myVal & r.Offset(, i).Value
     End If
    Next
    Select Case Right(myVal, 1)
     Case Is <= 4
      r.Offset(, 7).Value = "1,2,3,4"
     Case Is <= 6
      r.Offset(, 7).Value = "5,6"
    End Select
    myVal = ""
  Next
End Sub

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