• ベストアンサー

EXCELでのデータ整理

don_chaの回答

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.11

Helpで、Rangeを見てみると・・・ごちゃごちゃと書かれていますが、結局のところ 指定シートのセルの情報を持ってくるんですね。 Set myRange = Worksheets("Sheet1").Range("A2:A11") この行で、Sheet1のA2:A11セル情報をmyRangeに一旦保存し、 max = Application.WorksheetFunction.max(myRange) この行で最大値を求め、変数maxに代入しています。 <余談ですが、Setは省略可です。実はmax = Applicationの頭にも本来であればSetがあります。> Worksheets、Application、WorksheetFunction 以下は、プログラムの一例です。(最大値の出力は削ってあります。また、体裁を良くする為に左にわざと全角スペースが入っています) Sub DataConv()   Dim ii As Long   Dim jj As Long   Dim ClmMax As Double   '各列毎に最大値を求め、その最大値との割合を計算する   For ii = 1 To 256     '最大値を求める     ClmMax = 0     For jj = 2 To 65536       'データが存在しない場合は終了       If IsEmpty(Sheet1.Cells(jj, ii)) Then         Exit For       End If       If Sheet1.Cells(jj, ii) > ClmMax Then         ClmMax = Sheet1.Cells(jj, ii)       End If     Next jj     '求めた最大値が0以外であれば、求めた最大値から、指定データの割合を計算     If ClmMax <> 0 Then       For jj = 2 To 65536         'データが存在しない場合は終了         If IsEmpty(Sheet1.Cells(jj, ii)) Then           Exit For         End If         Sheet2.Cells(jj, ii) = Sheet1.Cells(jj, ii) / ClmMax       Next jj     End If   Next ii End Sub

128yen
質問者

お礼

Rangeの説明を丁寧にしていただいてありがとうございました。 あのあと、don chaさんから以前教えていただいたプログラムとblueoakさんの書き込みを参考にして自分でプログラムを作ってみました。 Sub DataSort() Dim max As Double Dim OpLn As Long Dim OpCl As Long Dim ii As Long Dim jj As Long Dim aa As Long Dim bb As Long OpLn = 8 'プログラムの開始する行(固定) OpCl = 2 'プログラムの開始する列(固定) bb = 20 'プログラムの終了する行(最終行(一番下)の行番号) aa = 3 'プログラムの終了する列(測定点の数) max = 0 For jj = OpCl To aa For ii = OpLn To bb If max < Worksheets(1).Cells(ii, jj) Then max = Worksheets(1).Cells(ii, jj) Next ii For ii = OpLn To bb Sheet2.Cells(ii - OpLn + 1, jj) = Sheet1.Cells(ii, jj) / max 'それぞれの値を規格化(ただし文字の分をSheet2では詰めるようにしている) Next ii max = 0 Next jj For ii = OpLn To bb Sheet2.Cells(ii - OpLn + 1, 1) = Sheet1.Cells(ii, 1) 'X軸の値を1列に挿入するため Next ii End Sub こんな感じのプログラムでなんとか動きました。Forの使い方が適当なのですが、動いたのでOKということで。。。 プログラムが出来た時の喜びは、自分にしか味わえませんね。 またEXCELで何かプログラムが必要になることがありましたら、またよろしくお願いします。

関連するQ&A

  • Excelのデータを書き換えるには

    Excelのデータを書き換えるには、たとえば、縦C列の文字で(空港)だけのデーターを残したいのですが、同時に横の2.5.8.9........................番のABのデーターも一緒に残せるのでしょうか。うまく説明出来ませんが、2A(住所)2B(電話番号)2C(空港) 5A(住所)5B(電話番号)5C(空港) 1A(住所)1B(電話番号)1C(スタジアム)3A(住所)3B(電話番号)3C(ジャイアンツ) 縦C列に(空港)がある横2.5.8.9......のデーターだけ残したいのです。宜しくお願いします。

  • エクセルの住所録データから郵便番号を引き出す方法はありますか?

    エクセルの住所録データから郵便番号を引き出す方法はありますか? A列に氏名B列に住所C列に電話番号が入力されています。 できればB列に郵便番号を一括変換で入力をしたいのですが・・・ エクセルで不可能であればフリーソフトでそのようなものがあればありがたいのですが・・・ よろしくお願いします。

  • エクセルのデータのラップ

    エクセル2003です。 5万件近くあるデータベースにかなりの数重複したデータが入っており、データ(行)を抹消したいのですが、何かいい方法はないでしょうか? 列は、6列程度で、A列は年月、B列は番号の様な文字列(先頭がゼロで始まる同じ桁数の数字群)、C~Eは文字列、F~Gは年月日です。 並べ替えて、手作業で地道に抹消していくぐらいしか思いつきませんので、いい方法がございましたら、教えて下さい。

  • EXCEL データの移動作業について

    OCRでデータを読み込み、エクセルに送って表にする作業をしています。取り込み方が難しく、エクセルに情報を送った後、そのデータを違うセルにドラッグで移動するという作業が必要になっています。すごく手間がかかるし、データは大量にあるので何かの機能を使って作業を短縮できないかと思ったのですが、教科書を見てもアイデアが浮かびません。何かよい案をご存知でしたら教えていただけませんでしょうか。 作業内容:例 Aの列に来るデータ、Bの列に来るデータ、Cの列に来るデータが順番にAの列に一列に並んでしまいます。これをそれぞれの列に、行がずれないように移動します。 *取り込んだときは、全てAの列に縦一列で A1 A2 A3 B1 B2 B3 C1 C2 C3 A4 A5 A6・・・(どんどん続く)というふうに並んでいます。 *作業後は、 A1B1C1 A2B2C2 A3B3C3 A4B4C4 A5B5C5・・・というふうに並べ替えたいんです。 わかりにくくてすみません。宜しくお願いします。

  • 入力された整理番号の最小値から最大値までを通し番号にしてデーターを振り分ける

     初めまして、よろしくお願いします。  セル上にランダムに整理番号をA列に、そのデーターをB列に順に乗せていきます。 例)     A    B    C     1   3   100 2   5    50 3   2    10 4   9     1 5   7    20 6 7 8 9 10 11  これを任意の場所(別シート)に     A    B    C 1 2   2    10 3   3   100 4   4     0 5   5    50 6   6     0 7   7    20 8   8     0 9   9     1 10 11 12  となる様な表を作りたいと思います。A列に入力された整理番号の最小値から最大値まで、入力されなかった番号まで(ここでは4,6,8)自動で通し番号となるよう表示し、B列のデーターを振り分けられる関数をよろしくお願いします。

  • excelでのデータ整理について。

    こんにちわ。題名にある通り、excelのデータ整理に関して質問があり、投稿させてもらいます。二つのシートにあるデータを以下のように一つにまとめたいのですが、データの数が違う点などで困っています。簡単に書くと下のようにまとめたいです。 シート1       シート2        シート3 (1) A         (1)          (1) A (2) B        (1)         (1)A (3) C        (2)          (2)B            (3)          (3)C            (3)         (3)C            (3)          (3)C (数字)は一列目の値で、アルファベットは二列目の値です。シート1とシート2を合わせてシート3のようにくっつけたいのですが、両方のデータ数が異なる為、手間取っています。なにか、方法等はあるのでしょうか。 皆さんのアドバイスを受けたく、投稿させていただきました。何卒、よろしくお願いします。

  • エクセルのデータ加工

    エクセルのセルで、縦に1行目名前A、2行目住所A、3行目電話番号A、4行目名前B、5行目住所B、6行目電話番号B・・・、という具合に並んでいるデータを横に1列目1行目名前A、1列目2行目名前B、2列目の1行目住所A、2列目の2行目住所B、3列目の1行目電話番号A、3列目の2行目電話番号B、という風に加工したいのですが、一つ一つセルを移動するのではなく、なにか良い方法はありませんでしょうか?ちなみにデータは1000件ほどあるのですが。

  • EXCEL データをレコード化するには

    Excelのデータについて教えてください 1枚目のシートに 管理番号:氏名:住所:電話番号の4つのデータがそれぞれ別のセルに入ってるデータが100件あります。 (Aの列:管理番号 Bの列:名前 Cの列:氏名 Dの列:電話番号) これを、2枚目のシートで利用したいのですが、 Aの列の管理番号を入力したら、その列のデータが表示されるように したいです。Wordの差込のような感じです。 =(Sheet1!$B3)これだと、1つのデータしか出ませんよね。 すべてのデータの送り状を作成したいと思っています。 VBAとかでないとできないのでしょうか。 よろしくお願いいたします。

  • エクセルで縦列を横行にするには?

    エクセル2007を使っています。 縦:A1列に日付があり、B1列にデータがあります。 これをC1行にA1列の日付、C2行にB1列のデータというように 縦のものを横に変更したいのですが、それぞれを参照するようにする他に、 どのようにしたらいいのでしょうか?

  • Excel 二つの表を用いたデータ整理

    かなり困っています。 (1)二つのエクセル表が存在 (2)ファイル1には↓のようにデータが並んでいます    A列  B列  C列  D列    生徒A 生徒B 生徒C 生徒D 行1 国語27 国語34 国語54 算数34 行2 数学36 家庭25 算数23 理科23 行3 理科55 理科44 理科21 英語44 行4 社会87 社会33 社会32 行5 英語54  (3)ファイル2は以下のようになっています    A列  B列  C列  D列  E列        国語  算数  理科  社会 行1 生徒A 27   36   55   87 行2 生徒B  (4)要するに、ファイル1のデータから必要な数値を抽出して ファイル2のデータに移し変えたいのですが、ファイルAの中の名称とデータ数が異なる場合があることもあり、整理はコピペしかないのかと半ばあきらめています。 とはいえデータの数は4000…正直なきたいです…何かいい方法はありませんか?