- 締切済み
Excelで座標を入力して配置する
Excelデータをどのように加工して良いかお知恵を貸して下さい。 下記のようなデータがあります データ郡1 A 16,-131 B 63,-97 C 7,-30 データ郡2 D 90,-29 E 11,3 この座標を別のシートで該当セルに色をつけるなど視覚的にわかりやすくしたい場合は どのようにすれば良いでしょうか。 他の要望としては ・上記のようなセルで4つ程郡類されており、各郡類ごとに色を変えたい ・各値に名前(AやB)がわかるようにしたい ・レコード数は100~200 ・座標の範囲は 600~-600 には収まる 初心者で申し訳ないのですが、Excelに強い方、ご教示下さい。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
#3です。 会社のxl2003で動かなかったので、手直しさせていただきます。 ポイント毎に色とラベルを付けるところを、下記の様にすると良さそうです。 2010と、2003でしか試しておりませんが、ご参考までに。 With ActiveChart.SeriesCollection(1).Points(i) If Application.Version < 12 Then 'xl2007以前 .MarkerBackgroundColorIndex = xValuesRange.Cells(i).Interior.ColorIndex Else .Format.Fill.ForeColor.RGB = xValuesRange.Cells(i).Interior.Color End If .HasDataLabel = True .DataLabel.Text = xValuesRange.Cells(i).Offset(0, -1).Value End With
- mitarashi
- ベストアンサー率59% (574/965)
以前散布図で、点毎にラベルをつけたコードを引っ張りだしていじってみました。 ご質問の仕様とは異なり、各データの分類を読んでラベルを、B列の色を読んでマーカーの色を変えています。(#2さんの方法がVBA要らずの本来のやりかただとは思いますが...) xl2010でやっています。xl2010の色指定についてはまだよく理解していませんので、セルの色設定方法によってはうまく動かない心配があります。(なお、当然条件付き書式では駄目です) Sub test() Dim sh As Worksheet Dim i As Long Dim xValuesRange As Range, ValuesRange As Range Set sh = ActiveSheet Set xValuesRange = sh.Range(sh.Range("B2"), sh.Range("B" & sh.Rows.Count).End(xlUp)) Set ValuesRange = sh.Range(sh.Range("C2"), sh.Range("C" & sh.Rows.Count).End(xlUp)) Charts.Add With ActiveChart .ChartType = xlXYScatter .SeriesCollection.NewSeries .SeriesCollection(1).XValues = xValuesRange .SeriesCollection(1).Values = ValuesRange .Location Where:=xlLocationAsObject, Name:=sh.Name End With With ActiveChart.Axes(xlCategory) .HasMajorGridlines = True .HasMinorGridlines = False End With With ActiveChart.Axes(xlValue) .HasMajorGridlines = True .HasMinorGridlines = False End With ActiveChart.HasLegend = False ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "タイトル" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xValuesRange.Cells(0).Value .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = ValuesRange.Cells(0).Value End With For i = 1 To xValuesRange.Rows.Count With ActiveChart.SeriesCollection(1).Points(i) .Format.Fill.ForeColor.RGB = xValuesRange.Cells(i).Interior.Color .HasDataLabel = True .DataLabel.Text = xValuesRange.Cells(i).Offset(0, -1).Value End With Next i End Sub
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
質問文を読む限り、私も No.1 さんと同様、ワークシートそのものを x-y 平面としてプロットしていくことをお考えなのかなと思いました。 しかしながら、整数のみでも 1,201^2 = 1,442,401 個のセルを使うとなると、かなり広大な図になりますね。小数点第 1 位まで表示しようとか考えると、更に 100 倍くらいの面積が必要に。しかも、数百個もの「群類」名を図中に載せるのでしょうか。本当に「そこまでの図」を描くことが必要なのかということも、今一度、検討してみられてもいいかもしれませんね。 で、こういった図はワークシートよりも、グラフ機能の「散布図」で描くことが一般的だと思います。そうすれば、セルの個数とかで悩む必要はなく、数百個のプロットくらい、どうということはありません。 グループごとに色を変えたいというご要望は、データの「系列」を分けて 1 つのグラフに載せることで実現されます。 各プロットの名称の表示については、どれかプロットを右クリックして「データラベルの追加」を実行するだけです。そうすると全データのラベルが表示されます。全部だとうっとうしいので不要なものは消したい場合は、ちょっと面倒ですが、表示されているラベルを 2 回クリックして 1 つのラベルだけ選択された状態にし、Delete キーを押すなどすれば、消せます。(作図というのは基本的に、ある程度、面倒と思ってください)
- keithin
- ベストアンサー率66% (5278/7941)
>座標の範囲は 600~-600 には収まる って、縦に1201マスは良いとしても、横に1201マスを並べるにはExcel2007以降を利用する必要がありますが、あなたはエクセルの幾つを使っているのですか。ご相談投稿では必ずご利用のソフトのバージョンまで、しっかり明記する事を憶えて下さい。 それと。前提は1マスあたり1単位で座標を切っていく事を一応想定していますが、実際はどうなんでしょうか。 例えば1マス当たり10単位でマスを切っていくならExcel2003以前を使っていてもできますが、その場合は1マスの中に1郡と2郡が共に含まれるみたいな状況も考えられます。そういう時はどうしたいのかアナタが考えて、決めて下さい。 手順: シート1のA,B列に1郡の縦座標、横座標を並べる シート1のC,D列に2郡の縦座標、横座標を並べる シート1のE,F列に3郡の縦座標、横座標を並べる シート1のG,H列に4郡の縦座標、横座標を並べる シート2のB1:ATF1に-600から600までの数字を並べる シート2のA2:A1202に600から-600までの数字を並べる シート2のB2に =IF(COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!$B:$B,B$1),1)+IF(COUNTIFS(Sheet1!$C:$C,$A2,Sheet1!$D:$D,B$1),2)+IF(COUNTIFS(Sheet1!$E:$E,$A2,Sheet1!$F:$F,B$1),3)+IF(COUNTIFS(Sheet1!$G:$G,$A2,Sheet1!$H:$H,B$1),4) と記入し、右クリックしてセルの書式設定の表示形式のユーザー定義で # と設定する コピーして表全域に貼り付ける 表全域を選択、条件付き書式でセルの強調表示ルールから「指定の値に等しい」で 1に対して1郡の色を設定する 再度表全域を選択、条件付き書式でセルの強調表示ルールから「指定の値に等しい」で 2に対して2郡の色を設定する 再度表全域を選択、条件付き書式でセルの強調表示ルールから「指定の値に等しい」で 3に対して3郡の色を設定する 再度表全域を選択、条件付き書式でセルの強調表示ルールから「指定の値に等しい」で 4に対して4郡の色を設定する