Excel VBA質問箱 IV

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

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


18 / 13645 ツリー ←次へ | 前へ→

【82316】隣のセルの値と比較して並べ替える かずこ 24/6/20(木) 15:08 質問[未読]
【82317】Re:隣のセルの値と比較して並べ替える マナ 24/6/20(木) 16:25 発言[未読]
【82318】Re:隣のセルの値と比較して並べ替える かずこ 24/6/20(木) 17:56 質問[未読]
【82319】Re:隣のセルの値と比較して並べ替える かずこ 24/6/20(木) 18:11 質問[未読]
【82320】Re:隣のセルの値と比較して並べ替える マナ 24/6/20(木) 18:48 発言[未読]
【82321】Re:隣のセルの値と比較して並べ替える かずこ 24/6/21(金) 16:15 質問[未読]
【82322】Re:隣のセルの値と比較して並べ替える マナ 24/6/21(金) 18:45 発言[未読]
【82323】Re:隣のセルの値と比較して並べ替える かずこ 24/6/24(月) 10:19 お礼[未読]

【82316】隣のセルの値と比較して並べ替える
質問  かずこ  - 24/6/20(木) 15:08 -

引用なし
パスワード
    A         B        C        D                      

1 919-03-1     A12-02-2     A12-02-1    A21-03-2     

2 pus       pus       pus       pus               

3 HOYU7411051   SEGU2455712   TEMU3908770   DJLU2014375 

4 20 3.7     20 22.62    20  22.64   20 14.74  

5 TNK (E)                        

6 6.1/2927             6.1/2588


上記のExcelシートを1行目の???-??-?をもとに並び替えたいと考えています。
(列数はその時々で変動します)

右端から左に向かって一つずつ比較し、比較元のセルの左6文字が比較先のセル左6文字と同じ場合、???-??-?のセル+その下のセル5つを比較先の???-??-?のセル+その下のセル5つの下に移動させたいと考えています。

※左6文字が同じセルが連続するのは最大3回までありますので、重ねたデータをさらに動かすことがあります。

説明がわかりづらかったら申し訳ありません

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

【82317】Re:隣のセルの値と比較して並べ替える
発言  マナ  - 24/6/20(木) 16:25 -

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

右端から順に、文字列比較、切り取り、貼り付け を繰り返してください。

【82318】Re:隣のセルの値と比較して並べ替える
質問  かずこ  - 24/6/20(木) 17:56 -

引用なし
パスワード
   ご返信ありがとうございます。
別の質問と被る部分があるのですが、
下記の★部分でエラーが出てつまずいております。
改善点があればご教示お願いいたします。

maxcol = Worksheets(1).Range("A1").CurrentRegion.Columns.Count

For j = maxcol To 1

If Left(Worksheets(1).Cells(j & "1"), 6) = Left(Worksheets(1).Cells(j - 1 & "1"), 6) Then

Range(Cells(j - 1 & "1"), Cells(j - 1 & "6")).Cut

★Worksheets(1).Cells(j - 1 & "7").Paste

End If

Next j

【82319】Re:隣のセルの値と比較して並べ替える
質問  かずこ  - 24/6/20(木) 18:11 -

引用なし
パスワード
   すみません、今改めて動かしてみたところ★印ではエラーが出ませんでしたがcutとpasteができておりませんでした。
何か改善点があれば教えていただけますでしょうか。
よろしくお願いいたします。

【82320】Re:隣のセルの値と比較して並べ替える
発言  マナ  - 24/6/20(木) 18:48 -

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

Cells(行番号, 列番号) です。


Dim ws As Worksheet
Set ws = Worksheets(1)

maxcol = ws.Range("A1").CurrentRegion.Columns.Count

For j = maxcol To 2 Step -1
  If Left(ws.Cells(1, j), 6) = Left(ws.Cells(1, j - 1), 6) Then
    ws.Cells(1, j).Resize(12).Cut
    ws.Cells(7, j - 1).PasteSpecial
  End If
Next

【82321】Re:隣のセルの値と比較して並べ替える
質問  かずこ  - 24/6/21(金) 16:15 -

引用なし
パスワード
   ご返信ありがとうございます。

申し訳ないです、列と行が逆になっていました。


教えていただいたコードの

ws.Cells(7, j - 1).PasteSpecialの部分で、

"rangeクラスの pastespecialメソッドが失敗しました"というエラーが出ます。

maxcol = ws.Range("A1").CurrentRegion.Columns.Count

の前に下記のコードがあるのですがこれが影響している可能性はありますか?

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


worksheets(1).Range("A1").PasteSpecial Transpose:=True

【82322】Re:隣のセルの値と比較して並べ替える
発言  マナ  - 24/6/21(金) 18:45 -

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

> ws.Cells(1, j).Resize(12).Cut
> ws.Cells(7, j - 1).PasteSpecial

 ↓ 1行にまとめる

ws.Cells(1, j).Resize(12).Cut ws.Cells(7, j - 1)

【82323】Re:隣のセルの値と比較して並べ替える
お礼  かずこ  - 24/6/24(月) 10:19 -

引用なし
パスワード
   ご返信ありがとうございます。


ご指摘通り修正してみたところ、うまく動作しました。

ありがとうございました。

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