• 締切済み

エクセル。あるセルに入っている値と同じ番号の行に

A列に、1から3万くらいまでの大きさの連続しない値が入っているとします。 行数は1000行くらいです。 この数字のデータを、そのセルに入っている値と同じ番号の行に入れたいのです。 たとえばA列に上から、1、5、13、、、という数字が入っている場合、 A1に1、その後空白、A5に5、その後空白、A13に13、という具合です。 どのようにすれば良いでしょうか。 本当はA列以外に10列に値が入っていまして、 これらもA列の数字と一緒に移動させたいと思っています。 こういった場合に適用できる方法をお教え願えたら嬉しいです。 よろしくお願いいたします。

みんなの回答

  • nebsoku
  • ベストアンサー率35% (65/185)
回答No.6

No.1です。 (みなさんVBAのスクリプトを書いておられるので、用なしかとは思ったのですが、質問&間違いがあったので、一応再度書き込みさせていただきます。) >=..........!$A$1:$J$6,2,FALSE) >にある $J$6の6とは何を指しているのでしょうか。 $J$1000 の間違いです、すみません。 1000は、「行数は1000行くらいです。」から1000としました。 実際の行数をいれてもらえますでしょうか。 Jは、「A列以外に10列に値が入って」からJ(10列目)としました。 実際の列数をいれてもらえますでしょうか。 大変失礼しました。

すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

こういう事で良いのでしょうか。A列~K列まで連続して目的のデータが入っていて、他のデータとは分離されている事を前提とします。 Sub test() Dim targetRange As Range Dim targetRow As Range Set targetRange = Sheets(1).Range("a1").CurrentRegion For Each targetRow In targetRange.Rows targetRow.Copy Sheets(2).Cells(targetRow.Cells(1).Value, 1) Next targetRow End Sub 外していたらすみません。

すると、全ての回答が全文表示されます。
  • sometime7
  • ベストアンサー率45% (18/40)
回答No.4

No3の方の例の方がいいと思いますが、 参考までに貼り付けます。 sheet1にデータを入れてもらい実行すると sheet2に並び替えられたデータが入力されます。 Sub 並び替え() Dim v As String Dim x As Long Dim y As Long Dim z As Long v = InputBox("処理する列を入力して下さい" & vbCr & "" & vbCr & "※英数字で入力して下さい") On Error GoTo Err With Worksheets("Sheet1") y = .Range(v & 65536).End(xlUp).Row End With For x = 1 To y With Worksheets("Sheet1") z = .Range(v & x).Value End With With Worksheets("Sheet2") .Range(v & z).Value = z End With Next Exit Sub Err: Exit Sub End Sub

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

A列のデータをA列に並べかえたいということですよね? 変更したい行を入力すると、並べかえるマクロにしてみました。 (存在しない行を入力するとエラーになります:←入力のチェックをしていません) IV行(256行)を作業列として使用していますので、この行はデータに使用できません。 セルの値が、数値以外及び1~65536外の場合は無視します。(結果的に消去される) Sub test()  Dim a, rw, col, cwork  cwork = 256 '←作業用列(=IV):データをいれないでください  mes = "対象とする列を入力してください(例:B)"  col = Range(Application.InputBox(prompt:=mes, Type:=2) & "1").Column  Columns(cwork).ClearContents  For rw = 1 To Cells(65536, col).End(xlUp).Row   a = Cells(rw, col).Value   If IsNumeric(a) Then    If (Val(a) > 0) And (Val(a) <= 65536) Then Cells(Val(a), cwork) = a   End If  Next rw  Columns(cwork).Copy  Columns(col).PasteSpecial (xlPasteValues)  Columns(cwork).ClearContents  Cells(1, col).Select End Sub

すると、全ての回答が全文表示されます。
  • nebsoku
  • ベストアンサー率35% (65/185)
回答No.2

No.1です。 間違えたこと書いてしまいました。 誤) 3.新規シートB1には次のように入力  =VLOOKUP(ROW(),対象シート名!$A$1:$A$1000,2,FALSE)  (以下C1なら3、D1なら4と列番号を1づつ増やしてください) 正) 3.新規シートB1には次のように入力  =VLOOKUP(A1,対象シート名!$A$1:$J$6,2,FALSE)  (以下C1なら3、D1なら4と列番号を1づつ増やしてください) でした。 すみません・・・

hamuhamuha
質問者

補足

早々にお返事いただきありがとうございます。 さっそく試しているところなのですが、正)の =..........!$A$1:$J$6,2,FALSE) にある $J$6の6とは何を指しているのでしょうか。 データ量が大きいので、小さく削って予備的に試してみたいのですが、 この6の意味がわからなくて。。。 初心者の質問で申し訳ありませんが、補足を頂けますと助かります。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。
  • nebsoku
  • ベストアンサー率35% (65/185)
回答No.1

ちょっとめんどくさい方法ですが。 1.新規シートを挿入 2.新規シートのA1には次のように入力  =VLOOKUP(ROW(),対象シート名!$A$1:$A$1000,1,FALSE) 3.新規シートB1には次のように入力  =VLOOKUP(ROW(),対象シート名!$A$1:$A$1000,2,FALSE)  (以下C1なら3、D1なら4と列番号を1づつ増やしてください) 4.新規シートA1からJ1(かな?)まで範囲選択し、一気に1000行下にドラッグ これでご希望の状態になると思います。 5.データがある範囲(A1:J1000かな?)を範囲選択 6.コピー 7.「形式を選択して貼り付け」から「値」を選択してペースト 8.置換で#N/Aを消す これできれいなリストができると思います。

すると、全ての回答が全文表示されます。

関連するQ&A

このQ&Aのポイント
  • ブラザーレーザープリンタHL-L2375DWのファームウェアを更新する方法について相談です。
  • ファームウェア更新のためにIPアドレスを調べようとしたが、印刷結果のIPアドレスが0.0.0.0になってしまっています。
  • プリンターはNAS(バッファローのリンクステーション)に接続されており、この状態でファームウェアの更新方法が知りたいです。
回答を見る

専門家に質問してみよう