Excel VBA質問箱 IV

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

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


9 / 13618 ツリー ←次へ | 前へ→

【82256】シートの中から必要なセルを複数取り出し、別シートに張り付けて並び替える かずこ 24/1/22(月) 17:43 質問[未読]
【82258】Re:シートの中から必要なセルを複数取り出... マナ 24/1/22(月) 19:26 発言[未読]
【82259】Re:シートの中から必要なセルを複数取り出... かずこ 24/1/22(月) 22:03 質問[未読]
【82260】Re:シートの中から必要なセルを複数取り出... マナ 24/1/22(月) 22:28 発言[未読]
【82261】Re:シートの中から必要なセルを複数取り出... かずこ 24/1/22(月) 23:13 質問[未読]
【82262】Re:シートの中から必要なセルを複数取り出... マナ 24/1/22(月) 23:40 発言[未読]

【82256】シートの中から必要なセルを複数取り出し...
質問  かずこ  - 24/1/22(月) 17:43 -

引用なし
パスワード
   vba初心者です。よろしくお願いいたします。

下記は質問の為に作成した例になります。

-----------------------------------------
[Sheet1]

   A列

1行目 918-01-1

2行目 MJIxPUS/
   RDXU2126441
   20   3.6
   TNK    (E)


3行目

4行目 A14-03-2

5行目 MJIxPUS/

6行目 DKOU2405691

7行目 20   3.7

8行目 TNK    (E)

9行目 3/1123

10行目

11行目

12行目 D13-03-2

13行目

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

※1行目の 918-01-1 や12行目の D13-03-2 を下記便宜上「レーン番号」と書きます

※前段階でpdfデータをエクセルデータに変換しているため、同じデータでもセル数が異なっています。←ここがとても厄介です

※12行目のような下のセルが空白のレーン番号は必要ありません。※そのレーン番号のあるセルは削除していただいても構いません。


このようにデータがシート上にちりばめられており、上記の例で必要なデータは、1行目から2行目と4行目から9行目です。
(データはシート上にたくさんあり、4行目から9行目のようなパターンだとセル数が4〜5と変動します)

ワイルドカード( "[ABC]##-##-#" と "###-##-#")などで頭のセルを見つけ、その下のセルをどこまで参照するかを条件分岐したいのですが、いいアイデアが思いつきません。

レーン番号があるセルから1つずつ下に参照していき、次に空白セルか別のレーン番号があるセルまでを参照するという条件分岐は作成可能でしょうか。

また、参照したセルを別シートに張り付けて順番に並べ替えるコードも教えていただけないでしょうか。


複雑になるかと思いますのでヒントだけでもいただけたら助かります。よろしくお願いいたします。

【82258】Re:シートの中から必要なセルを複数取り...
発言  マナ  - 24/1/22(月) 19:26 -

引用なし
パスワード
   ▼かずこ さん:

>レーン番号があるセルから1つずつ下に参照していき、次に空白セルか別のレーン番号があるセルまでを参照するという条件分岐は作成可能でしょうか。

空白セルで分割するだけではだめということでしょうか。

【82259】Re:シートの中から必要なセルを複数取り...
質問  かずこ  - 24/1/22(月) 22:03 -

引用なし
パスワード
   ご返信ありがとうございます。
1つのレーン番号と、レーン番号の真下にあるデータをセットとして扱いたいのですが、シート上では間に空白セルがなく連なっているパターンもあります。
よろしくお願いいたします。

【82260】Re:シートの中から必要なセルを複数取り...
発言  マナ  - 24/1/22(月) 22:28 -

引用なし
パスワード
   ▼かずこ さん:

>別シートに張り付けて並び替える

並び替えのルールを教えてください

【82261】Re:シートの中から必要なセルを複数取り...
質問  かずこ  - 24/1/22(月) 23:13 -

引用なし
パスワード
   ▼マナ さん:
>▼かずこ さん:
>
>>別シートに張り付けて並び替える
>
>並び替えのルールを教えてください


ご返信ありがとうございます。

並び替えが少し複雑で、説明が伝わりづらかったら申し訳ありません。
また、もし不可能でしたら全然構いません。

@ レーン番号の頭3桁と、中2桁が一致しているものは同じ列にまとめて、下1桁の数字で下から上に昇順で並び替えます。(データ同士の間の空白は不要です)

A @で作成したセルデータをひとまとまりとし、そこから又並び替えをします。
 レーン番号の頭3桁が同じ@は同じ行にまとめ、今度はレーン番号の真ん中2桁で左から昇順で並び替え  ます。(間の空白は不要です)

B Aで作成したひとかたまりを並び替えます。
 シートの上から下に、レーン番号の頭3桁を昇順で並び替えます。
 (左詰で、間に空白行をお願いします。)


以上よろしくお願いいたします。

【82262】Re:シートの中から必要なセルを複数取り...
発言  マナ  - 24/1/22(月) 23:40 -

引用なし
パスワード
   ▼かずこ さん:

どんな並び替えなのか全くわかりません。
とりあえず、たたき台として。

Sub test()
  Dim srtl As Object
  Dim c As Range, k As String
  Dim i As Long, r As Range, n As Long
  
  Set srtl = CreateObject("system.collections.sortedlist")
  
  For Each c In Columns(1).SpecialCells(xlCellTypeConstants)
    If c.Value Like "?##-##-#" Then
      k = c.Value
      Set srtl(k) = c
    Else
      Set srtl(k) = Union(srtl(k), c)
    End If
  Next
  
  Worksheets.Add
  For i = 0 To srtl.Count - 1
    Set r = srtl.getbyindex(i)
    If r.Count > 1 Then
      Cells(1).Offset(n).Resize(r.Count).Value = r.Value
      n = n + r.Count
    End If
  Next
    
End Sub

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