
No.5ベストアンサー
- 回答日時:
マクロの例です。
Sub test1()
Dim rng As Range
Dim i As Long
Set rng = Sheets("Sheet1").Range("A1:G10")
For i = 1 To rng.Count
Sheets("Sheet2").Cells(i, "A").Value = rng(i).Value
Next i
Set rng = Nothing
End Sub
Sub test2()
Dim rng As Range
Dim n As Long
Dim i As Long
Set rng = Sheets("Sheet1").Range("A1:G10")
n = rng.Columns.Count
Application.ScreenUpdating = False
For i = 1 To rng.Rows.Count
rng.Rows(i).Copy
Sheets("Sheet2").Cells(i, "A").Offset((i - 1) * (n - 1)).PasteSpecial _
Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next i
Application.ScreenUpdating = True
Set rng = Nothing
End Sub
No.6
- 回答日時:
再び Cupperです
解決しているようですが、他の方法を追加アドバイスです
回答番号:No.1の補足から
>それだと20行くらいになったときに面倒になりませんか?
行数が増えたときに面倒とかいうのであればしかたがないですね
それでも、一回きりの作業であればマクロやら関数やら使わないで行うほうが効率が良いので
それらを使わない方法を紹介しました
1行目のセルを選択して ShiftキーとCtrlキーを同時に押しながら下矢印キーを押すなどの
“ショートカットキー”を使うと効率いいんですけど…
慣れるとマクロや関数を作る(教えてもらってコピーする)よりも早くできます
とりあえずマクロが紹介されていますので次に関数を紹介してみましょう
INT(ROW(A1)/COUNTA(1:1)) これで列の位置、MOD(ROW(A1),COUNTA(1:1)) これで行の位置を
示せますので OFFSET関数やINDIRECT関数を使って一度に参照することができます
ただし1行目にデータがひとつも無い場合、列方向を決める関数内でエラーになるので注意が必要です
=OFFSET(INT((ROW(A1)-1)/COUNTA($1:$1)),MOD(ROW(A1)-1,COUNTA($1:$1)),1,1)
これを必要なだけ下にコピーすればOK
余計にコピーすると、そこには "0" が表示されます
場合によってはこの関数の結果をコピーして「形式を選択して貼り付け」で「値」を選んで貼り付けることも検討してください
※ OFFSET、INT、ROW、COUNTA、MOD の各関数の詳細は Excelのヘルプを参照してください
行列を入れ替えるため、OFFSET関数では行と列を逆にしていることに注意してください
ありがとうございました。
時々作るなら便利ですね。
関数はとても参考になりました。
ただ、一日に10回は行う作業なので、
やはりマクロの方が私にはいい様です。
(行数もまちまちです)
今後の参考にしたいと思います。
No.3
- 回答日時:
表のあるシート名をSheet1と仮定します。
≪例1≫
Sheet1A列データを、別シートA列A1以下にコピー
貼り付けたデータセル先頭B列セルに、1と入力
1と入力したセルのフィルハンドルをダブルクリックで連番入力
Sheet1B列データを、別シートA列データセルの下にコピー
貼り付けたデータセル先頭B列セルに、1と入力
1と入力したセルのフィルハンドルをダブルクリックで連番入力
といった操作をSheet1のI列データまで繰り返す
すべてコピペし連番が入力されたら、B列を主キーにして「昇順」で「並べ替え」
B列の連番は不要になるので消去
≪例2≫
まず、別シートのA列にSheet1のA列からI列までの1行目のセル参照式を入力
=Sheet1!A1
=Sheet1!B1
=Sheet1!C1
・
・
・
=Sheet1!I1
上記参照式入力セル範囲を選択
編集メニューの「置換」で
=
を
#
に「すべて置換」
セル範囲選択枠の右下角の■(フィルハンドル)を下方にドラッグ&ドロップ
#Sheet1!A1
#Sheet1!B1
#Sheet1!C1
・
・
・
#Sheet1!I1
#Sheet1!A2
#Sheet1!B2
#Sheet1!C2
・
・
・
#Sheet1!I2
#Sheet1!A3
#Sheet1!B3
#Sheet1!C3
・
・
・
#Sheet1!I3
・
・
セル範囲選択状態のまま、編集メニューの「置換」で
#
を
=
に「すべて置換」
参照式が不要なら、A列をコピー、その場で「形式を選択して貼り付け」の「値」で貼り付け
裏技という感じで、参考になりました。
そういう方法があったんですね。
関数でいっぺんに解決というのを考えてましたが、
大穴でした。
それがあったか!と目からうろこでした。
Excelの奥の深さを感じました。
ありがとうございました。
どれが自分にとって使いやすいか、覚えやすいか、
それは人それぞれってことなんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
Excel 指定行までコピーをおこ...
-
Excelで中央揃えが出来ない?
-
エクセルで特定の文字が入って...
-
エクセルでチェックボックスを...
-
Excel 頭に「0」がついている...
-
excel: 2行ずつ間隔を空けて関...
-
マクロで任意の列を参照して、...
-
Excelで日付の異なる時間帯別集計
-
エクセル2010 アイコンセット ...
-
Excelの特定のセルを1つおきに...
-
【エクセル】2行に一行のように...
-
桁の違う数値での並び替え
-
数値の列から偶数のみを抽出す...
-
エクセルで、0を含むセルを除外...
-
Excelでセルの高さを保ったまま...
-
EXCELマクロでワイルドカードを...
-
Excelで%表示を全角にしたいの...
-
マクロ(Excel)で上下のセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
Excelで中央揃えが出来ない?
-
エクセルで特定の文字が入って...
-
エクセルのまとめてカッコをつ...
-
Excel 頭に「0」がついている...
-
数値の列から偶数のみを抽出す...
-
Excel 指定行までコピーをおこ...
-
桁の違う数値での並び替え
-
エクセルに入力した文字列に句...
-
Excelの特定のセルを1つおきに...
-
Excel強制終了
-
Excelのデータ間引きについて
-
Excel2013 カラースケールを別...
-
セル内文章から、英数字のみ取...
-
Excelの結合でA列とB列の内容...
-
excelで、1つのセルに入ってい...
-
ある列のセルに特定の文字が入...
-
エクセルで、数値の範囲で仕分...
-
WEEKDAY 空白も7になってしまう
おすすめ情報