列1 列2 列3
行1 A1 A2 A3
行2 B1 B2 B3
行3 C1 C2 C3
を
列1
行1 A1
行2 A2
行3 A3
行4 (ブランク行)
行5 B1
行6 B2
行7 B3
行8 (ブランク行)
のようにしたいのですが、方法がわかりません。
1000行あるので、手作業だと大変ですので、何かのツールを使えばできるのではと考えています。
この場合、
(1)エクセルのマクロで、こんな処理(並べ替え)はできますか?
(2)アクセスでこのエクセルシートをインポートして、アクセスのクエリーで処理して
再度エクセルにエキスポートする方法は現実的でしょうか?
それが出来るとしたら、クエリーの何という機能を使えばよいのでしょうか?
恐縮ですが、ご存知の方がいらっしゃいましたら教えて下さい。
Vector:ソフトウェア・ライブラリ&PCショップ
URLはダミーです。
こんな感じでしょうか?
Sub Macro1()
For y = 1 To 1000
For x = 1 To 3
Worksheets(”Sheet2”).Cells((y - 1) * 4 + x, 1) = Worksheets(”Sheet1”).Cells(y, x)
Next x
Next y
End Sub
セルのデータだけをコピーして別のシートのA1を選択
ツールバーの貼り付けの右に
下向きの三角があるのでそれをクリックするとベローンと出てきますのでその中から
[行列を入替える]
をクリックで出来ます
ありがとうございました。
でも、行列を入れ替えるのではないのです。
最初に 左端を一列あけてください。
それから
Sub Macro1()
’
’ Macro1 Macro
’ マクロ記録日 : 2004/8/4
’
’ Keyboard Shortcut: Ctrl+q
’
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
b = 1
c = 2
d = 1
For a = 1 To 1000
Cells(d, 1) = Cells(b, c)
c = c + 1
If c >= 5 Then
c = 2
b = b + 1
d = d + 1
End If
d = d + 1
Next a
End Sub
を実行すればいいでしょう。
ありがとうございました。
やってみます。
私の以前の回答が質問の意図を完全に勘違いしてました。見なかったことにしてください。
(>_<)
了解しました。
わざわざご連絡いただきありがとうございました。
マクロが一番手軽でしょう
作ってみました
Private Sub CommandButton1_Click()
Sheets("Sheet1").Select
For I = 1 To 1000
For J = 1 To 3
Sheets("Sheet2").Cells(J + I * 4 - 4, 1).Value = Cells(I, J).Value
Next
Next
End Sub
ありがとうございました。
大変助かります。感謝感謝です。
http://www.hatena.ne.jp/1091595446#####
エクセルで作った表(3列、1000行) 列1 列2 列3 行1 A1 A2 A3 行2 B1 B2 B3 行3 C1 C2 C3 を 列1 行1 A1 行2 A2 行3 A3 行4 (ブランク行) .. - 人力検索はてな
URLはダミーです。
>(2)アクセスでこのエクセルシートをインポートして、アクセスのクエリーで処理して
>再度エクセルにエキスポートする方法は現実的でしょうか?
あまり現実的ではないです。
レポートとして印刷するのであれば極簡単ですが、データとして扱った場合は難しいですね。
ありがとうございました。
ではエクセルのマクロでの処理が良いのですね。
http://www.hatena.ne.jp/1091595446#
エクセルで作った表(3列、1000行) 列1 列2 列3 行1 A1 A2 A3 行2 B1 B2 B3 行3 C1 C2 C3 を 列1 行1 A1 行2 A2 行3 A3 行4 (ブランク行) .. - 人力検索はてな
マクロの方が多いので基本機能でエイヤとやる方法を…
1.行1〜3を全て選択します。
2.Ctrl+Cを押します。
3.別のシートのA1セルを右クリックして形式を選択して貼り付けをクリックします。
4.表示されるダイアログで「行列を入れ替える」をチェックします。
5.縦に並び変わるので、あとは手動でB列を全選択してA列の末尾に貼り付け、C列も同様に全選択してA+B列の末尾に貼り付けます。
半手動ですが、読み込んだCSVをサクット要素ごと並び替えしたい時等に便利な方法です。
マクロになれてない方はこちらの方が早いのではないでしょうか?
ありがとうございました。
でも1000行あるので、ちょっと・・・
A列からC列までの3列のうち、1行目から1000行目までの部分について、
事例のように値が入力されている場合には、たとえば、同じワークシートのA列からC列を除く列の、1行目から4000行目までの範囲に、次の関数を設定すれば、マクロを使わずに、御希望の結果がでると思われます。
=IF(MOD(ROW(),4)=0,””,INDIRECT(CHOOSE(MOD(ROW(),4),”A”,”B”,”C”,””)&TEXT(INT(ROW()/4)+1,”#”)))
あとは、上記の式を設定した範囲をコピーし、形式を選択して貼り付け...画面を開き、「値」として貼り付ければ、他のワークシート等で利用できます。
ありがとうございました。
そういう方法もあるのですね。
試してみます。
ありがとうございました。
マクロで出来るのですね。助かります。
これからマクロの使い方を勉強します。
感謝します。