• ベストアンサー

2行目と3行目を1行目に右側につけて、空白を削除してつめるコードが知りたいです。

1 2 3 4 5 6 7 8 9 . . . A1「1」、A2「2」、A3「3」A4空白、A5「4」、、、と言う風なデータがあるの ですが、 これを 123 456 789 ... と言う風に2行目と3行目を1行目に右側につけて、空白を削除してつめるコー ドが知りたいです。 実際のデータは数値ではなく文字列です。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

#02です >2をB列、3をc列と言う風にしたいです 関数なら、以下を同じシートの適当なセルに貼り付けて右方向、下方向にコピー =OFFSET($A$1,INT((ROW(A1)-1)*4)+COLUMN(A1)-1,0) マクロなら以下でできるでしょう Sub Macro1() Const trg As String = "A" '文字列が入力された列を指定する Dim idx, cnt As Long Dim act As Worksheet Set act = ActiveSheet Worksheets.Add after:=act For idx = 1 To act.Cells(65536, trg).End(xlUp).Row Step 4   cnt = cnt + 1   Cells(cnt, trg).Value = act.Cells(idx, trg).Value   Cells(cnt, trg).Offset(0, 1).Value = act.Cells(idx, trg).Offset(1).Value   Cells(cnt, trg).Offset(0, 2).Value = act.Cells(idx, trg).Offset(2).Value Next idx End Sub

noname#150256
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

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

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

>B列、c列に移したいです。よろしくお願いします。 だとすると、 Sub test()   Dim v, x   Dim i As Long      With ActiveSheet        v = .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Value        ReDim x(1 To (UBound(v) + 1) / 4, 1 To 3)        For i = 1 To UBound(x, 1)            x(i, 1) = v((i - 1) * 4 + 1, 1)            x(i, 2) = v((i - 1) * 4 + 2, 1)            x(i, 3) = v((i - 1) * 4 + 3, 1)        Next        .Range("A:A").ClearContents        .Range("A1").Resize(UBound(x, 1), 3).Value = x   End With End Sub こんな感じでしょうか?

noname#150256
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

同一シート(のF列に出す例)でよいなら Sub test01() d = Range("A65536").End(xlUp).Row k = 1 For i = 1 To d Step 4 Cells(k, "F") = Cells(i, "A") & Cells(i + 1, "A") & Cells(i + 2, "A") k = k + 1 Next i End Sub ーー データ例A1:A11 a b c d e f g h i ーー F1:F3 abc def ghi 既回答とほぼ同じですが。

noname#150256
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

「コード」とありますがマクロでなくても関数でできます。同じシートの適当なセルに以下の式を貼り付けて下方向にコピーしてください。ただしデータはA列にあるものとしています。違う列なら「$A$1」を「$C$1」のように変更してください。「Z1」の箇所は行番号を生成するためのものですから変更は不要です。 =OFFSET($A$1,INT((ROW(Z1)-1)*4),0)&OFFSET($A$1,INT((ROW(Z1)-1)*4+1),0)&OFFSET($A$1,INT((ROW(Z1)-1)*4+2),0) またマクロがよいなら以下のようなサンプルでもできます。 元のデータは消してしまわないよう、新しいシートに書き込むようにしています。データ列は2行目で指定してください Sub Macro1() Const trg As String = "A" '文字列が入力された列を指定する Dim idx, cnt As Long Dim act As Worksheet Set act = ActiveSheet Worksheets.Add after:=act For idx = 1 To act.Cells(65536, trg).End(xlUp).Row Step 4   cnt = cnt + 1   Cells(cnt, trg).Value = act.Cells(idx, trg).Value & _       act.Cells(idx, trg).Offset(1).Value & act.Cells(idx, trg).Offset(2).Value Next idx End Sub でも実際のシートは質問通りではないように思いますので修正が必要かもしれませんね。もしそうならご自身で修正してください。

noname#150256
質問者

補足

回答していただいて申し訳ないのですが、2をB列、3をc列と言う風にしたいです。説明不足ですいません。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>と言う風に2行目と3行目を1行目に右側につけて ひとつのセルに連結させるのですか? それとも、B・C列に移すのですか?

noname#150256
質問者

お礼

B列、c列に移したいです。よろしくお願いします。

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

関連するQ&A

  • 空白行削除

    宜しくお願いします。 1枚のファイルシートに14ブロックのデータが貼り付けてあります。各ブロック行の長さは違く、ランダムに貼り付けてあります。例えば、データ 何百行の空白 データ…と繰り返されており、約3万5千行ぐらいあります。 空白行削除で多分半分近くまで上に詰められれば良いのですが、たくさんあるのでマクロで教えていただければと思います。ネットでころがってるデータ試してみたのですが(1部) ENDLESSに実行されて、出来てるのかどうかも確認はとれてません。ちなみに自分のシートに貼ってあるデータはA列からAS列まであり数字、文字混在です。また各ブロックの終わりは集計行となっており、空白セルがまじってます。宜しくお願いします。

  • Excelで空白行を削除したい

    他の書類からExcelにコピペしたんですが、もとの書類の書式のせいか偶数行が全て空白行になっています。 実際に必要なデータは奇数行の各列に並んでいます。 見づらいので空白行(または偶数行でも同じ)を削除したいんです。 行数が500を超えるので、一行づつ行の削除をやっていると大変な手間です。 一発でやる方法はないでしょうか?

  • 削除して空白になった行を下から詰めたい

    A行には項目の名前があり、A列には番号が上から1,2,3・・と振られています。 そして、B2からR999までにはそれぞれデータが入っています。 このとき、任意のR列のセルを選択したまま、マクロを実行すれば、 任意の行のB列からR行が削除されて、下から上に詰めるように(空白にならないように) するマクロを作りたいです。(A行に割り振っている番号を消してしまうと 連番が崩れるので、B列からR列までを詰めていくような感じです) 例: 今、R11のセルを選択しています。希望のマクロを実行すると、C11~R11が削除されて    C12以降のデータが丁度上に移行するような感じです。 どのようなコードを作れば良いのか、お力をかしていただければ幸いです(/_;)

  • エクセルのファイル中の空白行を削除する方法

    エクセルのファイルでデータ入力されているものがあるのですが 空白の行があり,それを削除したいのですが たくさんあって手作業では大変です。 マクロなどでうまく自動的に削除できないものでしょうか? 因みにデータはA列にのみ入力されてます。 宜しくお願いします。

  • excel2010の空白セルのある行の削除方法

    Excel2010を使っております。 2列以上の多数の行からなるデータに、空白のセルがあちこちに散在している状態で、 ”検索と選択"→"ジャンプ"→"セル選択"で空白セルを指定して、行のみ削除をすると、いずれかの列が空白である行がOR条件で削除されてしまいます。 全部の列が空白(AND条件)の行のみを削除する方法を教えてください。(画像を添付いたします) 宜しくお願いいたします。

  • 空白行の削除について

    いつもお世話になっております。 どうぞよろしくお願いします。 1行目から100行目までのデータが入力されています。 次に行をあけてデータが入っています。 コマンドボタンでデータとデータの間の空白行を削除したいと思っています。 ご教授よろしくお願いします。

  • エクセルで特定の行だけ選んで表示させる方法

    エクセルで8000行20列位あるデータの中から A列に30という数値の入っている行と A列が空白になっている行を抽出し なおかつ元のデータをその抽出したデータだけに置き換えたい (A列が30と空白以外の行は削除してしまいたい) のですがどのような方法がありますか? なお、毎月同じような行数のデータを、同じように加工しなければ ならないので簡単に出来るやり方を教えて下さい。 宜しくお願いします。

  • Excelで1行置きに入れた空白行を削除したい

    QNo.7098860「Excelで1行置きに空白行を挿入するには」で答えてくれました usami33さん、kyboさん、nobu_suzuki1さん、kiyosatonoさん、mike_gさん、 ありがとうございました。 mike_gさんたちが教えてくれた方法(A列にSerial番号)で順調に進んでいますが、 今度は挿入した空白行を一辺で削除する方法を教えてくださいませんか? 何から何までお手数をお掛けしますが、宜しくお願いいたします。

  • エクセルで空白行を削除する 2列とも空白の場合のみ

    エクセルで空白行を削除する処理についての質問です。 1つの列のみ空白の場合、削除するというマクロは分かるのですが、 1つの列が空白、また別の列も空白の場合、削除するという処理のやり方を教えていただきたいです。 たとえばC列が空白で、P列も空白の場合のみ、削除するなどです。 どちらか、一方のみが空白の場合は、削除しません。 お手数ですがよろしくお願いいたします。

  • 行を削除するマクロ2

    a列には0から2の数値が入っています。 2行目から、a列の数値が2かつ最下の行(この画像の場合は12行目)までを削除するマクロのvbaの構文を教えてください。 ただし、a列の数値がすべて2未満の場合、行は削除しないようにしてください。 削除するのは行全体で、a列だけではありません。 エクセル2010です。 どうぞよろしくお願いします。

専門家に質問してみよう