[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『表をリストに変換する方法』(かんがえすぎ)
Excel操作の質問です。
たとえば100行x10列の表があったとして、
これをA列だけに一直線に並べたい場合、
どのように操作するのが簡単だと思いますか?
具体的な例は無いです。
データの状態や求める並び順によって使える方法/使えない方法があるかもしれませんが、
こういうデータならこういう操作が良いよ!っていうのを上げていただければと思います。
一番ストレートな力技は、
B1:B100を切り取り→A101に貼り付け、
C1:C100を切り取り→A201に貼り付け、
以下略
もうちょっと効率化すると、並び順が列順ではなくなるが、
F1:J100を切り取り→A101に貼り付け、
C1:E200を切り取り→A201に貼り付け、
C201:C400を切り取り→A401に貼り付け、
以下略
頻度が多ければマクロにすれば良いのですが、時々発生する程度の作業なので上記をやりながら、もうちょっとマシな操作方法は無いのかな。と思いつつ手作業でやってしまいます。
皆さんの知恵をお貸し下さい。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Sub Macro1() Dim i As Long, j As Long, X As Long ReDim 読(1 To 100, 1 To 10), 書(1 To 1000) With ThisWorkbook.Sheets("Sheet1") 読 = .Range("A1:J100").Value X = 1 For j = 1 To 10 For i = 1 To 100 書(X) = 読(i, j) X = X + 1 Next i Next j .Range("A1:J100").ClearContents .Range("A1:A1000") = WorksheetFunction.Transpose(書) End With End Sub
(TAKA) 2018/09/07(金) 13:44
私なら、10列程度であれば
最初にB1を選択し、
[Ctrl]+[Shift]+[↓][→] [Ctrl]+[X] [←] [Ctrl]+[↓] [↓] [Enter] [→]
という一連のキー操作の繰り返しでやっちゃいますね^^;
(白茶) 2018/09/07(金) 14:11
白茶さん
成る程です。
10列などの少なめの列数で途中に空欄がないという条件であればその方法も早そうですね。
(かんがえすぎ) 2018/09/07(金) 14:17
たとえば[挿入]→[図形]→[正方形・長方形]でシート上に■の図形を配置します。
図形を右クリックして[マクロの登録]→[新規作成]と押すとVBEが出てくるので
そこに先ほどのマクロを貼っておきます。
次からは図形をクリックするだけで登録したマクロが走ります。
(TAKA) 2018/09/07(金) 14:24
Dim dt(), r As Long, c As Long, rg As Range r = Range("A1").CurrentRegion.Rows.Count c = Range("A1").CurrentRegion.Columns.Count ReDim dt(1 To r * c) For Each rg In Range("A1").CurrentRegion dt(rg.Row + (rg.Column - 1) * r) = rg.Value Next rg Cells.Clear Range("A1").Resize(r * c).Value = Application.Transpose(dt) End Sub (mm) 2018/09/07(金) 14:46
だからマクロではない操作方法という条件で質問したつもりです。
VBAを使えば一瞬で出来るのは当初書いたように承知しているので、あっ、あの時に使ったVBAコードを使いたい!
と思った時にすぐに呼び出せる方法があるなら知りたいです。
皆さんはどうされているのでしょうか。
(かんがえすぎ) 2018/09/07(金) 14:55
数式で
A101に =INDEX($B$1:$CV$100,IF(MOD(ROW(),100)=0,100,MOD(ROW(),100)),ROUNDDOWN(ROW()/100,0)-IF(MOD(ROW(),100)=0,1,0)) 下方コピー (seiya) 2018/09/07(金) 15:06
>皆さんはどうされているのでしょうか。 についてです。
>あっ、あの時に使ったVBAコードを使いたい! よくやる操作はアドイン作っていつでも呼び出せるように リボンにボタンを用意したり、 キーボードショートカットに登録したりしてます。 (例えば[Ctrl]+[Shift]+[V]で「値だけ貼り付け」とか)
あと、 特定の業務に特化したマクロであれば、 それ専用のファイルを作って、 「この業務を始める時は、まずこれを開く」って感じで、 ファイルを[業務の入口]という位置付けにしてしまいます。
いずれにしても「これは別(あるいは次)の機会でも使えるぞ!!」と思ったら、 まずは、ある程度汎用性を高めたコードに書き直す事を考えますね。 どこから呼び出すのかは、私の場合、その後で考えてます^^;
(白茶) 2018/09/07(金) 15:18
個人用マクロブックを使用したり、色々方法はありますが、
>マクロではない操作方法という条件で質問したつもりです。
ということならお門違いでしたね。失礼しました。
(TAKA) 2018/09/07(金) 16:01
白茶さん
>「この業務を始める時は、まずこれを開く」って感じで、
なるほどです。ファイル化もアドイン化もそうですが、
増えすぎて今度は見つけるのに時間がかかっているのが悩ましいところです。
TAKAさん
今回は合致しませんでしたが、よくお世話になっておりますので今後共よろしくお願いいたします。
考えていたらTABを改行に置換すれば早いような気がしてきました。
そうするとエクセルより外部エディタを使ったほうが良いのか。と最適解が見えてきた気がします。
エクセル上で置換する方法なんて無いですよね・・・?
(かんがえすぎ) 2018/09/07(金) 17:31
範囲選択してから、どこかのセルに縦横変換貼り付け。 これを更に範囲コピーしてからエディタに貼り付け。 こうすると、セル間にTAB文字が入ります。
エディタで文字列置換(\tを\rに全置換)すると縦1列になるので、これを再びコピーしてシートに貼り付けで、終了。
(???) 2018/09/07(金) 17:41
Sub 選択範囲を1列に変換() Dim i As Long
With Selection If .Columns.Count < 2 Then Exit Sub
For i = 2 To .Columns.Count .Columns(i).Copy .Cells(1).Offset((i - 1) * .Rows.Count) Next i
Intersect(.Cells, .Cells.Offset(, 1)).Clear End With End Sub
(もこな2) 2018/09/08(土) 16:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.