
エクセルで、下のような365×24の表で
A B C ・・X
1 ● ● ● ●
2 ● ● ● ●
3 ● ● ● ●
・
365 ● ● ● ●
で、これを8,760×1の表に簡単に変換したいのですがやり方がわかりません。少なかったらコピーして行と列を入れ替えるで、やってもいいのですが今回はこれが、かなりの量があり手作業だと時間がかかりすぎ、実用的ではありません。ですので、この作業を簡単に出来る方法を探しております。どうぞ宜しくお願いします。
なお、こちらはオフィス2000、2002を使用しております。
No.2ベストアンサー
- 回答日時:
まずCSVファイルに書き出します。
すると次のようになっているでしょう。●,●,●,●,●
●,●,●,●,●
●,●,●,●,●
それで、縦一列ですので、「カンマ」をすべて「改行」に置換します。ワープロソフト、またはテキストエディタを使います。
すると、次のようになります。
これを再度、Excelで読み込みます。以上です。
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
回答有難うございました。教えていただいた方法でうまく出来ましたが、今回はかなりの量のデータを処理しなくてはいけなかったので、この方法では時間がちょっとかかりすぎてしまいました。
しかし、このようなやり方があるとは思わなかったので、勉強になりました。どうもありがとうございました。
No.4
- 回答日時:
関数式でやる思考プロセスを説明します。
エクセルの関数は式を入れるセル以外の、他のセルに値をセットできません。(VBAは自由です。)
(本件は別のセルに持ってくるだけで、演算は要りません
ので、望みのセルを指定するだけで良いのです。)
受けるセル側で、どこからかの来て欲しいセルを表現(指定)すれば良いのです。
A列の下に続けてB列をその下にC列を続けるやり方を
考えます。
例えば値を持ってくる(受ける)セル1000行目には
どの行の、どの列なのか?を考えます。
A列1-365を越えるとBの1-365を持ってくる。
これで730セル埋まります。1000-730=270ですからC列の270行目のセルを持ってくるべきことが
判ります。このことを一般化して、
(A)列は現在行1000を365で割った2に1足した
2+1=3(-->C列)が決める。
(B)元の表の上からの第何番行数は、余りの270が決める。
以上は元の表の左上隅($A$1)を基点にして考えてい
る。
以下は4行の元表例で説明します。
行は=MOD(ROW()-1,4)+1を使うと、1、2、3、4、1、2、3、4・・・の繰り返しが出来る。
列は=INT((ROW()-1)/4)+1を使うと、1,1,1,1,2,2,2,2,3、3、3、3・・・が出来る
左上隅を基点に列、行を指定してセルを表現する関数に
OFFSET関数があることを思い出して、これを使う。
(知ってないと思い出せませんが)
ただOFFSET関数はOFFSET(基点、行、列)
ですが行や列は「隔たり」行数や列数を指定せねばならないので-1しておく必要があります。
それで空いた列の第1行に
=OFFSET($A$1,MOD(ROW()-1,365),INT((ROW()-1)/365))といれ、下へ複写します。8760行まで+ハンドルを引っ張るのは大変ですがほかに楽な方法はないでしょう。
----
VBAならOFFSETに当たるのはCells(i,j)です。この問題ではCells(i,1)です。こちらなら元の表のx行、y列から収まるべきiを計算します。i=(x-1)*365+jになります。
xは1-365、yは1-24をFOR分でネストして
繰り返します。
回答有難うございました。詳しく教えていただいたのですが、私には少しハードルが高くちょっと理解できない部分がありましたが、これから少しづつ勉強していきたいです。
今回は本当に有難うございました。
No.3
- 回答日時:
こんなのもありかな…
Sub Rearranges()
nRow = 365
nCol = 24
For i = 1 To nRow
For j = 1 To nCol
’A1、A2、A3…、B1、B2と一行にするときはこっち
ActiveSheet.Cells((j - 1) * 10 + i, nCol + 1) = ActiveSheet.Cells(i, j)
’A1、B1、C1…、A2、B2と一行にするときはこっち
ActiveSheet.Cells((i - 1) * 4 + j, nCol + 1) = ActiveSheet.Cells(i, j)
Next
Next
End Sub
マクロで実行します。
条件に応じてコメント行を使い分けてください。
行数が変わる場合はnRowの値を、
列数が変わる場合はnColの値を変更してください
回答有難うございました。マクロについて、よくわからなくうまくできなかったのですが、今回教えていただいて、興味がわきました。これから少しづつ勉強できたらいいなと思いました。
今回は有難うございました。
No.1
- 回答日時:
こんにちは。
maruru01です。どこかの列(仮にY列)を作業列として使用します。
Y1に、
=OFFSET($A$1,INT((ROW()-1)/24),MOD(ROW()-1,24))
と入力して、8760行目までコピーします。
これだと、
A1,B1,C1・・・X1,A2,B2・・・W365,X365
の順になります。(行優先)
もし列優先で、
A1,A2,A3・・・A365,B1,B2・・・X364,X365
のようにするなら、数式を、
=OFFSET($A$1,MOD(ROW()-1,365),INT((ROW()-1)/365))
にします。
数式をコピーして全データを表示出来たら、そのデータ範囲を選択してコピーし、別の場所に[形式を選択して貼り付け]の[値]貼り付けして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】数式を入力したい。...
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
エクセルシートの見出しの文字...
-
エクセルの文字数列関数と競馬...
-
エクセルでフィルターした値を...
-
表計算ソフトでの様式の呼称
-
【画像あり】【関数】指定した...
-
Dir関数のDo Whileステートメン...
-
【マクロ】実行時エラー '424':...
-
Excelに貼ったXのURLのリンク...
-
【関数】3つのセルの中で最新...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【画像あり】4つの...
-
セルにぴったし写真を挿入
-
【マクロ】エラー【#DIV/0!】が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報