• 締切済み

エクセルで複数列を一列に自動保存をしたいのです。

エクセル2002を使用しています。 複数列(5列程度)を長い一列にして自動保存が出来る方法を探しています。 1列100行。1列目(1~100)2列目(101-200)3列(201-300) というような内容です。 行数は固定で、列数に4~6の間で変動があります。 現在は最初に1~300(最後までの)数字をオートフィルで作成し。 次に隣の列に1~100番目のセルを選択して、他のブックにコピーアンドペーストをし、次に2列目を同じようにコピーアンドペーストというような作業をしています。 最後に1~300までが一列になったものを保存するという初心者です。 何か良い方法が有ればお願い致します。

みんなの回答

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

データが入力してあるブックの別シートの任意のセルに以下の式を入力して下方向に600行コピーしてください。式中2カ所ある「Sheet1!$A$1」の部分は実際のシート名と、一番左上のセルアドレスに変更します(つまり「1番目」のデータセルのアドレスです。なお$をつけて絶対参照にしてください) =IF(OFFSET(Sheet1!$A$1,MOD(ROW(A1)-1,100),INT((ROW(A1)-1)/100))="","",OFFSET(Sheet1!$A$1,MOD(ROW(A1)-1,100),INT((ROW(A1)-1)/100))) 後は1列になったデータをコピーして、他のブックに「編集」→「形式を選択して貼り付け」→「値」で貼り付ければ良いかと…

mamenimameni
質問者

お礼

ありがとうございました。 まだ上手に出来ませんが頑張ってみます。

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.1

同じ操作を繰り返すだけなら、記録マクロが最適です。 先にキーボードのどれかに役割を割り振っておいて そこから実際に行う動作を記録するのです。 最後に上書きしたら、記録終了。 これで今後はボタンを押すだけ。。。 スキルアップの為に挑戦してみては? 少しぐぐれば解説サイトが沢山ありますよ。^^ http://www.google.co.jp/search?q=%8BL%98%5E%83%7D%83N%83%8D%81@%83G%83N%83Z%83%8B&lr=lang_ja&num=20&hl=ja&btnG=Google+%8C%9F%8D%F5

mamenimameni
質問者

お礼

ありがとうございました。

関連するQ&A

  • excelで複数列にまたがる値を一列に並び変える方法

    多分基本的な操作で済むとは思うのですが、調べてもよく解らなかったので質問させて頂きます。 excelの表を、 100 400 700 1000 200 500 800 1100 300 600 900 1200 の様になっているのを、 100 200 300 400 500 ... の様に、一列に並べかえたいです。 毎回コピーペーストでやっていますが、100列近くになると流石にしんどいので……。 マクロや関数などの知識はありません。もしそういう知識が必要でしたら、学習用のサイトなども併せてご紹介いただきたいです。 よろしくお願い致します。

  • エクセルのオートフィルで

    excel97 を使っています。簡単なオートフィルの使い方について教えて下さい。 シート1のA1~A?(いくつあるかわからない) にある文字列を、シート2のA1にだけ「='シート1'!A1」と入力した後、オートフィルでシート1に入力されている分全てを簡単に入れる方法はないでしょうか? シート1の行数を数えてからその行数までドラッグしていたのですが、行数が多かったりすると大変なので、良いやり方がありましたら教えて下さい。よろしくお願いします。

  • 条件に合う行だけを切り取り→別ブックに自動転記

    【環境】 Windows7 Office2013 【目的】 Excelで作ったcsvデータを、条件に合うものだけ抜き出して別ブックに自動で転記したい (1つの表を2つに分けたい) 【詳細】 ※オートフィルを使うという前提で説明しますが、目的の結果が得られるのであれば   オートフィル以外の方法でも構いません。 csvのデータがあります。 その中からオートフィルを使って「M列」で条件を選択(複数)し、その結果を 抜き出して(切り取って)別のブック(別シートではダメ)に自動転記したいです。 最終的に、元々の表Aから条件に合ったものだけを表Bとして保存。 表Aから表Bのデータを抜いたものは、そのまま表Aとして上書き保存。 ・・・したいです(添付画像参照) ネットで調べたところ、表の中に検索条件を入れる欄を作って・・・という方法 ならあったのですが、データ(csv)はそのままシステムに取り込むので 余計な欄を増やしたり等はできません。 そこで行き詰ってしまいました。 【表の詳細】 A~S列まであります。 項目名などの行は無く、1行目からデータが入っています。 ※行数は、都度変化します。 M列の中から「90」「95」の物だけを抜き出して、表Bとしたい。 【やってみたこと】 オートフィルでの操作を「マクロの記録」で記録しようとしたのですが、 オートフィルの結果だけを「切り取る」ことが出来ず、ダメでした。 どなたかお知恵をお貸しください。

  • 表を新しいブックに保存

    Sub 表を新しいブックに保存反映日ごと() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Do While Range("A2") <> "" Range("A1").Select '一番上の発売日の範囲を取得 Range("A2").Select Dim 列 As Long Dim i As Long 列 = 1 '列数を取得 Do While Cells(1, 列) <> "" 列 = 列 + 1 Loop 列 = 列 - 1 '発売日ごとのデータ量を取得 i = 2 Do Until Cells(i, 1) <> Range("A2").Value i = i + 1 Loop i = i - 1 '発売日のまとまりのデータ範囲を選択 Range(Cells(1, 2), Cells(i, 列)).Select '発売日ごとのデータをコピー Selection.Copy '発売日を取得 Dim 発売日 As Long 発売日 = Range("A2").Value '新しいブックを追加してシート名を発売日に設定 Workbooks.Add ActiveSheet.Name = 発売日 新ファイル名 = ActiveSheet.Name Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & "メンテ_" & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select '保存された発売日分のデータを削除 Range(Cells(2, 1), Cells(i, 列)).Select Selection.Delete Shift:=xlUp Loop '不要になった表転記用ブックを閉じる Application.DisplayAlerts = False ActiveWindow.Close Application.DisplayAlerts = True Range("A1").Select Application.ScreenUpdating = True End Sub Sub 表を新しいブックに保存() Application.ScreenUpdating = False Dim フルパス As String, ファイル名 As String, パス As String, 新ファイル名 As String 新ファイル名 = ActiveSheet.Name フルパス = ActiveWorkbook.FullName ファイル名 = Dir(フルパス) 'パスを取得 パス = Replace(フルパス, ファイル名, "") '表の範囲選択をする Range("A1").Select Dim 行数 As Long, 列数 As Long 行数 = 1 列数 = 1 Do While Cells(行数, 1) <> "" 行数 = 行数 + 1 Loop 行数 = 行数 - 1 Do While Cells(1, 列数) <> "" 列数 = 列数 + 1 Loop 列数 = 列数 - 1 Range(Cells(1, 1), Cells(行数, 列数)).Select Selection.Copy '新しいブックを開く Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select 'シート名をファイル名にして保存 ActiveWorkbook.SaveAs Filename:=パス & 新ファイル名 & ".xls", _ FileFormat:=xlExcel8, Password:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close Range("A1").Select Application.ScreenUpdating = True End Sub

  • EXCELのオートフィル機能について

    仕事でオートフィル機能を使うことが多いのですが、 通常、 1 2 3 とあるデータを下方向にオートフィルすると 1 2 3 4 5 6 といった形で連続DATAをひっぱりだせますが、 例えば 1 2 3 というDATAがあって 1 1 1 1 1 2 2 2 2 2 3 とDATAのコピーをオートフィルでしたいときに、 一度連続DATAを作った後に、 都度右クリックなどでDATAのコピーを選択しなければならないのですが、 初期設定で連続DATAではなくDATAのコピーを設定することは出来ませんか? もちろんコピー&ペーストという方法もありますが、 作業効率をあげるために、 カチカチっとオートフィルを動作させるだけでコピーをしていきたいのですが。。。

  • エクセルで複数のシートにあるものをひとつに

    お世話になっております。 似たような質問を検索してみましたが、いまいち要領がつかめませんので教えて下さい。 ブックに複数のシートがあり、それをを同じブックまたは、別のブックでもいいので一つのシートにまとめたいのですが何かいい方法はありますでしょうか? ブックにより、シート枚数が違います(多いものは30シート以上)。 同じブックでの各シートの列のタイトルは同じで、行はデータ量により違います。(多いものは1000行以上) イメージとしては、シートを全コピーして、新しいシートにペースト。 次のシートを全コピーしてそれを、今ペーストした下の行にペースト。 現在はこのコピー&ペーストで地道に作業しております。 かなり時間を取られております。 XPでオフィスは2007を使用しております。

  • エクセルのオートフィルについての質問です。

    エクセルのオートフィルについての質問です。 エクセルでオートフィルをした時に,セルの中身だけコピーされ,列の幅がコピーされません。 列の幅も変更するためには,どのようにすれば良いでしょうか?

  • エクセル オートフィルを使った日付について

    こんにちは。 今、月ごとの勤務表を作成しています。 シート1枚につき1月分、合計12シートあります。 表の行数は各月すべて31日分(31行)作成してあります。 A列に「2005/1/1」と入力し、オートフィルで月末まで入力しているます。 31日ある月は表の最後の行までオートフィルを使っても問題ないのですが、29日とか30日の月は翌月の1日まで入力されてしまいます。(下記参照) (シート1)    (シート2) 2005/1/1     2005/2/1  ・        ・  ・        ・  ・        ・  ・       2005/2/28  ・        2005/3/1  ・        2005/3/2 2005/1/31    2005/3/3 オートフィルを使ってコピーした場合に、月末から先の日付を表示させないようにする関数はありませんでしょうか? よろしくお願い致します。

  • エクセルでのマクロについての質問です

    毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。

  • エクセルでVLOOKUP関数

    お世話になっています。 Excel2003を使っています。 元となる名簿のブックAがあります。 それぞれ、違うブックにVLOOKUP関数を使って、範囲をAからリンクさせるようにしています。 ブックAの名簿は人が増えたり、個人データを新たに追加する毎に行や列が増えていきます。 今のところ =VLOOKUP(A1,'[ブックA.xls]名簿'!$A$3:$W$100,3,0)) この式を違うブックに入れているのですが、 ブックAの行数が増えても、「100」のまま動きません。 ブックAの行数・列数が増えたら、リンクしてる関数を入れている、他ブックも自動的に増えるようにする方法はありますか? 初歩的な質問ですみませんが、よろしくお願いします。

専門家に質問してみよう