Excel VBA質問箱 IV

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

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


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

【29542】データの分類 あらみの 05/10/7(金) 11:42 質問[未読]
【29544】Re:データの分類 m2m10 05/10/7(金) 12:19 お礼[未読]
【29561】Re:データの分類 あらみの 05/10/7(金) 17:04 質問[未読]
【29582】Re:データの分類 とまと 05/10/8(土) 15:29 回答[未読]
【29686】Re:データの分類 あらみの 05/10/11(火) 19:47 質問[未読]
【29692】Re:データの分類 とまと 05/10/11(火) 22:33 質問[未読]
【29698】Re:データの分類 あらみの 05/10/12(水) 7:16 質問[未読]
【29702】Re:データの分類 とまと 05/10/12(水) 9:03 回答[未読]
【29705】Re:データの分類 とまと 05/10/12(水) 9:24 発言[未読]
【29904】Re:データの分類 あらみの 05/10/16(日) 0:13 お礼[未読]

【29542】データの分類
質問  あらみの  - 05/10/7(金) 11:42 -

引用なし
パスワード
   VBA、教えてください!

1. A B C D E F G H I J K L M N O P・・・
  1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
  1 1 2 4
  0 3 3 4
  0 2 2 2 3 4 4

     ↓

2. A B C D E F G H I J K L M N O P・・・
  1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
  1 1   2        4
  0        3 3   4
  0    2 2 2  3    4 4

1.のように、A列から右方向に1から4までのデータがあり、
2.のようにデータ1から4を列位置を指定して分類を実施するVBAを教えて
いただきたいのですが・・よろしくお願いいたします。

※データ1は0も含む。
※列位置はデータ1・0はA列から右方向へ、データー2はE列から右方向へ。
 各データは4つが最大です。

【29544】Re:データの分類
お礼  m2m10  - 05/10/7(金) 12:19 -

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

VBAどの部分が判らないのですか?

 マクロの自動記録の内容を、見るのも勉強に良いと思います。

 1、 マクロの起動記録で、右に挿入を作ります
 2、 判定は、同じ列で2行目と自分の行を比べ、違ったら
    1番で作成したマクロを call で良いと思います。

【29561】Re:データの分類
質問  あらみの  - 05/10/7(金) 17:04 -

引用なし
パスワード
   早速のお返事、ありがとうございます。
私の記述表現がわかりにくくて申し訳ございませんでした。

AからP・・・と表示しているのはEXCELシートの列番号です。
(1つのセル内に1から4の数字が入力されてません)
お手数おかけいたしますがよろしくお願いいたします。

 2. ABCDEFGHIJKLMNOP・・・
>  1111222233334444
>  11 2    4
>  0    33 4
>  0  222 3  44
>
>1.のように、A列から右方向に1から4までのデータがあり、
>2.のようにデータ1から4を列位置を指定して分類を実施するVBAを教えて
>いただきたいのですが・・よろしくお願いいたします。
>
>※データ1は0も含む。
>※列位置はデータ1・0はA列から右方向へ、データー2はE列から右方向へ。
> 各データは4つが最大です。

【29582】Re:データの分類
回答  とまと  - 05/10/8(土) 15:29 -

引用なし
パスワード
   こんにちは。
テストシートで試してみてください。


Sub test()

Dim rowA As Long
Dim i As Long, k As Long
Dim m2 As Long
Dim m3 As Long
Dim m4 As Long
Dim vntA, vntB


rowA = Range("A65536").End(xlUp).Row


ReDim vntA(1 To rowA - 1, 1 To 16)
vntB = Range("A2").Resize(rowA - 1, 16).Value


For i = 2 To Range("A65536").End(xlUp).Row

 m2 = 5
 m3 = 9
 m4 = 13
 
 For k = 1 To Cells(i, "Q").End(xlToLeft).Column
   Select Case vntB(i - 1, k)
    Case 0 To 1
        vntA(i - 1, k) = vntB(i - 1, k)
    Case 2
        vntA(i - 1, m2) = 2
        m2 = m2 + 1
    Case 3
        vntA(i - 1, m3) = 3
        m3 = m3 + 1
    Case 4
        vntA(i - 1, m4) = 4
        m4 = m4 + 1
   End Select
 Next k
Next i
 
Range("A2").Resize(rowA - 1, 16).Value = vntA


End Sub

【29686】Re:データの分類
質問  あらみの  - 05/10/11(火) 19:47 -

引用なし
パスワード
   皆様のご回答、感謝いたします。
ありがとうございます!データの分類ができました!

ところで、追加で質問させていただきたいのですが、


A  B  C  D  E  F  G  H  I  J  K
1  数量 単価          2  数量 単価
                  2  数量 単価


・・のように、データ1から4に各、数量・単価・小計欄が存在し、
その範囲ごとを列位置指定して分類を実施することは可能でしょうか?

【29692】Re:データの分類
質問  とまと  - 05/10/11(火) 22:33 -

引用なし
パスワード
   こんばんは。
意味がわからないんですけど、もう少し
わかりやすく説明してもらえますか?
分類前のデータと分類後のデータを表示するとか。
あと送信するとき等幅にチェックをつけると
レイアウトがくずれないようです。
今発見しました(^^

>ところで、追加で質問させていただきたいのですが、
>
>
>A  B  C  D  E  F  G  H  I  J  K
>1  数量 単価          2  数量 単価
>                  2  数量 単価
>
>
>・・のように、データ1から4に各、数量・単価・小計欄が存在し、
>その範囲ごとを列位置指定して分類を実施することは可能でしょうか?

【29698】Re:データの分類
質問  あらみの  - 05/10/12(水) 7:16 -

引用なし
パスワード
   お返事ありがとうございます。
勉強不足で申し訳ございません。よろしくお願いいたします。

区分=1から4
数量=S
単価=@

分類前
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD・・AK AL
1 S @ 1 S @ 1 S @ 1 S @ 2 S @ 2 S @ 2 S @ 2 S @ 3 S @ 3 S @・・・4 S
1 S @ 1 S @ 2 S @ 4 S @
0 S @ 3 S @ 3 S @ 4 S @
0 S @ 2 S @ 2 S @ 2 S @ 3 S @

     ↓
分類後
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD・・AK AL
1 S @ 1 S @ 1 S @ 1 S @ 2 S @ 2 S @ 2 S @ 2 S @ 3 S @ 3 S @・・・4 S
1 S @ 1 S @       2 S @                  4 S @
0 S @                      3 S @ 3 S @  4 S @
0 S @          2 S @ 2 S @ 2 S @    3 S @

分類前:A列から右方向に1から4(各々数量・単価が存在)のデータがあります。

分類後:データ1から4を先頭に列位置を指定して分類を実施します。
※データ1は0も含む。

【29702】Re:データの分類
回答  とまと  - 05/10/12(水) 9:03 -

引用なし
パスワード
   おはようございます。
項目4つあったんですね。
sheet1 から sheet2に分類します。
シート名は適宜変更してください。


Sub 分類2()

Dim i As Long
Dim k As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet

Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")

sh2.Cells.Clear
sh1.Rows(1).Copy sh2.Range("A1")

For i = 2 To sh1.Range("A65536").End(xlUp).Row
 For k = 1 To sh1.Cells(i, "A").End(xlToRight).Column - 2 Step 3
   Select Case sh1.Cells(i, k)
   Case 0, 1
     If sh2.Cells(i, "A") = "" Then
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Cells(i, "A")
     Else
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Range("IV" & i).End(xlToLeft).Offset(, 1)
     End If
   Case 2
     If sh2.Cells(i, "P") = "" Then
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Cells(i, "P")
     Else
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Range("IV" & i).End(xlToLeft).Offset(, 1)
     End If
   Case 3
     If sh2.Cells(i, "AB") = "" Then
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Cells(i, "AB")
     Else
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Range("IV" & i).End(xlToLeft).Offset(, 1)
     End If
   Case 4
     If sh2.Cells(i, "AN") = "" Then
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Cells(i, "AN")
     Else
      sh1.Cells(i, k).Resize(1, 3).Copy sh2.Range("IV" & i).End(xlToLeft).Offset(, 1)
     End If
   End Select
 Next k
Next

【29705】Re:データの分類
発言  とまと  - 05/10/12(水) 9:24 -

引用なし
パスワード
   >項目4つあったんですね。

3つですね。

【29904】Re:データの分類
お礼  あらみの  - 05/10/16(日) 0:13 -

引用なし
パスワード
   とまとさん、ありがとうございました!!
イメージどおりの処理ができました。
また、ご回答いただきました皆様、本当にありがとうございます。
勉強不足のため今後も素人質問させていただくと思いますが、
よろしくお願いいたします。

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