こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル マクロ セルを一気に移動させる(再々投稿)

質問が慌てていたので、再投稿させてください。
すみません、どなたかわかるかた教えてください!!


WINDOWS-XP、エクセル2003を使っています。

A列に下記のようになっているエクセル表があります。
図番の下に個数の表示がされています。
これは規則的に交互交互に登録されています。
図番******の下にある数値は、個数です。
そこで、その個数の部分だけを図番の隣のセル、つまりB列に移動させたいのです。
さらに、図番の下に空欄ができるので、その空欄を上につめて1つの表にしたいのです。
以上のことが、完了するマクロを教えてください。
このようなデータが3千件つらなっています。

 A列        B列
SK108700   <<ここに個数(図番の下にある数値)を移動させたい>>
1
AB911100
5
DS310500
1
DS310500
1

以上、わかりにくい説明ですみませんが、なにとぞよろしくお願いします。

投稿日時 - 2007-04-27 12:07:16

QNo.2954283

すぐに回答ほしいです

質問者が選んだベストアンサー

Sub idou_1()
Dim i As Long
For i = 1 To 3000 / 2
Cells(i, 2).Value = Cells(i + 1, 1).Value
Range(Cells(i + 1, 1), Cells(i + 1, 2)).Delete shift:=xlShiftUp
Next i
End Sub

投稿日時 - 2007-04-27 12:48:50

補足

ありがとうございます!!!!
もう一点!
「A列とB列の間に1列挿入する」というマクロコードはどうなりますか?!
すみません!!!よろしくお願いいたします!!

投稿日時 - 2007-04-27 14:29:56

お礼

お礼が遅くなり大変申し訳ありません。
いろいろなやり方、大変参考になりました。
ありがとうございました!!

投稿日時 - 2007-07-15 13:30:54

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは。
データが[文字]→[数値]→[文字]→[数値]と規則正しく並んでいるなら、
かつ、とにかく1列挿入すればよいとして。

まずA列の前に1列挿入。
SpecialCellsメソッドを使ってB列の文字をA列に、数値をC列に振り分けて
B列をクリア。
という考え方もできるかもしれませんね^ ^

Sub sample()
  Dim r As Range

  Set r = Range("A1") '起点となるセルを設定
  With r.EntireColumn
    .Insert
    With .SpecialCells(xlCellTypeConstants, xlTextValues)
      .Copy r.Offset(, -1)
      .Offset(1).Copy r.Offset(, 1)
    End With
    .ClearContents
  End With
  Set r = Nothing
End Sub

投稿日時 - 2007-04-28 18:56:49

ANo.2

ahoo 様。
 申し訳ありませんが、コードを流用させていただきます。

Sub idou_1()
Dim i As Long
For i = 1 To 3000 / 2
If Cells(i + 1, 1).Value = "" Then Exit For
Cells(i, 2).Value = Cells(i + 1, 1).Value
Range(Cells(i + 1, 1), Cells(i + 1, 2)).Delete Shift:=xlShiftUp
Next i
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select
End Sub

※必ずしも、3千件あるとは限らないと思い、For 文の直後に判定文を入れて、データがなくなった時点で処理をやめるようにしてみました。
 最後に、B列の前に1列挿入しています。

投稿日時 - 2007-04-27 14:56:18

お礼

お礼が遅くなり大変申し訳ありません。
いろいろなやり方、大変参考になりました。
ありがとうございました!!

投稿日時 - 2007-07-15 13:31:27

あなたにオススメの質問