電子書籍の厳選無料作品が豊富!

エクセルに関する質問です。

下記表をご覧ください。
A列(ナンバー)に並んでいる同じ値のセルに同じ色を付けて、一目で何種類に分かれているか知りたいです。
今までは一つずつ探してそれぞれ色付けしていたのですが、数字を入れれば自動で同じ数字別に色分けされたいです。

ご存知の方、どうかご協力お願いします(>人<;)

「エクセルに関する質問です。 下記表をご覧」の質問画像

A 回答 (5件)

こんにちは



>自動で同じ数字別に色分けされたいです。
他の方の回答にあるように「条件付き書式」でできますが、色って似た色がいろいろあるので、どの順番でどういう色にするかとか、事前に何色の種類を用意しておくかなどといった問題があります。
この問題に関しては、どのような方法をとるにしても、付いてくるものと言えます。

それを了解の上でなら・・・
対象シートの、「シートモジュール」に以下のマクロをコピペすれば、実現可能と思います。

※ 色に関しては、エクセルのColorIndexのカラーパレットから適当に20色を選定してあります。
 (もしもパレットを変更なさっている場合は、その色が採用されます)
※ ナンバーの種類が設定の色数を超えた場合は、最初に戻って同じ色を使用します。
※ 色数を増減したり色を変えたい場合は、5行目のiColorの設定を変えることで可能です。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim dic, iColor, c, txt, cIndex, tIndex

If Intersect(Columns(1), Target) Is Nothing Then Exit Sub
iColor = Array(4, 6, 7, 8, 17, 19, 20, 22, 24, 33, _
       35, 37, 38, 39, 40, 43, 44, 45, 46, 50)
Columns(1).Interior.Color = xlNone
Set dic = CreateObject("Scripting.Dictionary")
cIndex = 0

For Each c In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
 txt = c.Text
 If txt <> "" And c.Row > 1 Then
  If dic.exists(txt) Then
   tIndex = dic(txt)
  Else
   tIndex = cIndex
   cIndex = (cIndex + 1) Mod (UBound(iColor) + 1)
   dic.Add txt, tIndex
  End If
 c.Interior.ColorIndex = iColor(tIndex)
 End If
Next c
End Sub
    • good
    • 1

ちょっと手間がかかりますが、条件付き書式 でできると思います。



1)A1~A13を範囲選択
2)条件付き書式→新しいルール→数式を使用して、書式設定するセルを決定
3)次の数式を満たす・・・ の欄に =$A1="101-22222222" 
4)プレビューの[書式]をクリックし、塗りつぶしタブ で背景色に紫を選択 [OK]→[OK]
5)条件付き書式→ルールの管理→新規ルール→数式を使用して、書式設定するセルを決定
6)3)~4)と同様に101-33333333のときに赤を選択
7)5)~6)を101-44444444で黄色 101-55555555で青 に設定
「エクセルに関する質問です。 下記表をご覧」の回答画像4
    • good
    • 0
この回答へのお礼

chiune様、ご回答ありがとうございます。
私の説明不足ですみません。
この数字は毎回変わるもので、その都度同じ値を検索して自動的に同じ値が同じ色に変わるようにしたかったんです(>人<;)

お忙しい中、ご回答ありがとうございました!!

お礼日時:2021/01/23 11:47

VBAの回答を待つしかないねー。


質問が古くなったら、締め切って再投稿だねー。
    • good
    • 1
この回答へのお礼

Andro様、ありがとうございます!!
VBAの回答、待ってみます^_^
質問も古くなったら再投稿ですね!承知しました!

お礼日時:2021/01/23 11:25

すると、こうなる。

色を増やしたければカラーコード0〜3を増やせばいい。
「エクセルに関する質問です。 下記表をご覧」の回答画像2
    • good
    • 1
この回答へのお礼

Andro様、丁寧なご説明ありがとうございました。Googleドライブは何か、というレベルだったので、先程調べてみました。
そんな便利な機能があるんですね。しかしながら会社でそういう類の機能を禁止されている為、今回の方法では難しいかもしれません。の人的なことならいいかもしれないんですが。。。
今使用しているこの共有ファイル上でエクセル関数など使ってできる方法であれば問題ないと思うのですが。。。

教えて頂いた内容は、また別の機会に使わせていただきます。勉強になりました!

ありがとうございます!

お礼日時:2021/01/23 11:16

1. Google ドライブ を開き、[新規][Google スプレッドシート]を選択するとスプレッドシートが開く。


2. 質問通りの文言をシートに入力する。
3. スプレッドシートの[ツール][スクリプトエディタ]を選択すると「無題のプロジェクト」が開く。
4. 入力済みの文字を削除して、以下のスクリプトをコピー、[保存]する。
// 同じナンバーのセルに同じ色を付ける
function myFunction() {
// スプレッドシートを取得する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();// Container Bound Script
var sheet = spreadsheet.getSheets()[0];// シート数を指定して取得
var lastRow = sheet.getLastRow();// 最終行
sheet.clearFormats();

// ナンバー列を読み込む
var deleteNum = [];
var designTable = sheet.getRange(2, 1, lastRow-1, 1).getValues();
// 同一ナンバーを検索する
for (var i=0; i < designTable.length-1; i++) {
for (var j=i+1; j < designTable.length; j++) {
//Logger.log(i +':'+ designTable[i][0] +' vs ' + j +':'+ designTable[j][0]);
// 削除ナンバー(行)を整理する
if (designTable[i][0]==designTable[j][0]) {
for (var x=0; x <= deleteNum.length; x++) {
if (deleteNum[x]==i) {
break;
}
}
if (x>deleteNum.length) { deleteNum.push(i); }
}
}
}
// 同一ナンバーを削除する
for(var i=0; i < deleteNum.length; i++){
designTable.splice(deleteNum[i]-i, 1);
}
// 背景色をつける
var table = sheet.getRange(2, 1, lastRow-1, 1).getValues();
for (var i=0; i < table.length; i++) {
for (var j=0; j < designTable.length; j++) {
if (table[i][0]==designTable[j]) {
sheet.getRange(i+2, 1).setBackground(getColor(j));// 背景色:4色まで
}
}
}
}

// カラーテーブルから色を取得する(4色まで)
function getColor(number) {
var colortable = [
[0, '#ffff00'],// 黄
[1, '#ff0000'],// 赤
[2, '#00ffff'],// シアン
[3, '#9900ff'],// 紫
];
for (var i=0; i < colortable.length; i++) {
if (number==colortable[i][0]) {
return colortable[i][1];
}
}
return '#ffffff';
}
5. ツールバーから[myFunction]を選んで[▷実行]を押下する。
「エクセルに関する質問です。 下記表をご覧」の回答画像1
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!