• 締切済み

エクセルの質問です

1)名前の定義で「リスト」とつけます。 2)リストの中には「テレビ」「ビデオ」「DVD」「PC」とあるとします。 3)別シートで=INDEX(リスト,ROW(A1))としオートフィルします。 3)で出たリストのフォントの色(一文字づつ違う色を指定したいと思っています)を変えていきたいのですが、関数の戻り値のフォントの変え方がわかりません。 どなたかご教授をお願いします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

関数の戻り値を、一文字ごとに異なる色にすることはできません。 「値」に置き換えて行うことになります。 「値」に置き換えても大丈夫ですか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

この質問内容と 1)-3)jは関係が無く、書く必要は無い。 「セルの文字列の一文字づつ違う色を指定したいと書けばよい。」 どんなプロセスで文字列がセルにセットされたか、回答に影響すると 思いますか。 ーー 一文字ずつ違う色を設定したいということだが どういうように配色したいのか質問に書いてない。 下記私のコード例のようなのは、色の濃淡の感じががばらばらで 使い物にならないように思う。見づらい。 ーー 既に回答があるが、エクセル関数では 文字色の取得 文字色の設定 はできない。 エクセルの関数とその引数は、セルの「値」だけを見たり設置するもの。エクセルの関数の基本的なことを確信を持ってない質問が、ままある。 ーーー それに質問者の書いた = InStrRev(c, Mytext) から、推察すると、テレビとかの語句全体を色を変えるのか、テとレとビの各々を違う色にしたいのか判らない。 コード例が質問の主旨を混乱させている例です。 ーー Sub Font_Color_D() Dim c As Range, i As Integer, j As Integer Dim Mytext As String Application.ScreenUpdating = False For Each c In ActiveSheet.UsedRange 'x = 3 For j = 1 To Len(c) c.Characters(j, 1).Font.ColorIndex = x x = x + 2 If x > 30 Then x = 3 Next j Next Application.ScreenUpdating = True End Sub これではしたい結果とどう違うのか。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

>Dを検索しているのにDVD全部が赤に変わってしまいます 当然でしょう。jにはテキストの文字数がセットされてますから c.Characters(i, j).Font.ColorIndex = 3 だと、DVDの1桁目から3文字色を変えることになります。 Dが一つだけなら c.Characters(i, 1).Font.ColorIndex = 3 とする Dが複数ならStrRevでなく1文字ずつチェックするルーチンが必要になります。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

一文字づつフォントの色を変えるのですか? マクロを使わないと無理だと思います。

dpbut2010
質問者

補足

そうですね マクロを使いたいのですが コードは Sub Font_Color_D() Dim c As Range, i As Integer, j As Integer Dim Mytext As String Mytext = "D" j = Len(Mytext) Application.ScreenUpdating = False For Each c In ActiveSheet.UsedRange i = InStrRev(c, Mytext) If i > 0 Then c.Characters(i, j).Font.ColorIndex = 3 Next Application.ScreenUpdating = True End Sub としてるのですがその全部のフォントの色が変わってしまいます。 Dを検索しているのにDVD全部が赤に変わってしまいます

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

マクロを使わない限り基本的に色などの書式情報を得ることができません。

dpbut2010
質問者

補足

そうですねマクロを使いたいのですがコードがうまいこといきません なにかいいサイトはないでしょうか?

関連するQ&A

  • エクセルでの質問でです

    Sheet2のA1からA5まで田中、鈴木、山田、佐藤、土屋、大橋とあり これを「リスト」と名前の定義をしています。 Sheet1のB5から =IF(ISERROR(MATCH(INDEX(リスト,ROW(A1)),$B$3:$J$3,0)),INDEX(リスト,ROW(A1)),"") とB10まで下にオートフィルをしています。 このB5からB10までを 「名前」と名前の定義をしています。 Sheet1のB3,F3,J3に入力規則のリストを使って 元の値は=OFFSET(名前,COUNTIF(名前,"<"""),0,COUNTIF(名前,">"""),1) となっています。 なのでB3のプルダウンで田中を選ぶとF3またはJ3では田中と空白を除く部分が表示されるように作ったのですが B5からB10まの式の中で$B$3:$J$3部分なのですが 連続していない範囲として検索をしたいのですが(プルダウンがあるのはB3,F3,J3だからC3やD3は含んでほしくない為) そういった事はできないのでしょうか? どうかお力添えをお願いいたします。

  • 【エクセル】 VBAでエラーが出てわかりません。。

    やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • Excel VBAで入力規則リストに記述できる関数

    入力規則のリストで、ユーザー定義関数を使ったリストにしたいのですが、どうやれば良いのでしょうか? 使い方としては、レジストリの内容をユーザー定義関数経由でリストで選択させるようなことをやりたいと思っています。 入力規則の設定で「元の値」に、ユーザー定義関数を記述してもうまくいきませんでした。 多分、関数の戻り値が悪いのだろうと思うのですが、どのような戻り値にすれば良いか、お教えください

  • ExcelのSMALL関数について

    ExcelのB列(B2:B50)にフラグ「0」または「1」が入力されています。 フラグ「0」が入力されている行番号を関数を使用して取得したいと思っています。 B列のフラグは順次更新されており、フラグ「0」の個数は複数あります。 下記の関数式(以下多めにオートフィル)で上記のことができるようになったのですが、 =IF(COUNTIF(B$2:B$50,0)<ROW(A1),"",SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1))) SMALL関数式の部分↓↓の意味がよくわかりません。 SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1)) どなたかご教授いただけないでしょうか。

  • エクセル関数で質問です

    こんにちは。いつもお世話になっております。 エクセルの関数で質問があります。 毎月の集計表を作っており、シート名が1~31、 ●月合計・●月合計2 とあります。 ●月合計のシートには日付が縦に入っており、 A4 ●月1日 A5 ●月2日・・・というように 続いております。 B4のセルには、 1のシートの数値、 B5のセルには  2のシートの数値・・・というように、 各シートのデータを参照したいと思っていますが、 下へオートフィルで数式をコピーして参照できるように するにはどうしたらいいでしょうか? ROW関数などを使ってみたのですが、どうもうまくいかず 困っています。 一列だけでなく、複数列あるため、手作業で一つ一つ 参照するのは、非常に困難なため、お知恵を拝借できれば幸いです。 よろしくお願いいたします。 

  • 初めて質問させていただきました。

    初めて質問させていただきました。 VLOOKUP関数と名前の定義の組み合わせて行いたいことがあります。 私は、別シートで「名前の定義」で沢山名前を付けております。 VLOOKUPの範囲に上記の名前を使っております。 さらにそのVLOOKUP関数の戻り値を、他のVLOOKUP関数の範囲に使用したいのですが、エラーになってしまいます。 どのようにすれば、VLOOKUP関数の戻り値を、範囲に指定することが出来るでしょうか? 具体的には、添付致しました画像をご覧頂きたいと思います。 現在B3には、VLOOKUP(A3,買掛金,2,0)となっており、その戻り値はA株式会社となっております。 B2の戻り値が短期借入金となった場合、自動的にB3の戻り値をA銀行となるようにしたいのです。 初めて質問させていただきますので、説明が下手であると思いますが、ご教授をお願い致します。

  • エクセル カレンダー 自動入力について

    シート1にカレンダー 、シート2に入所の部屋・氏名・時間・日程  退所も部屋・氏名・時間・日程入力したら自動でカレンダーに入るように作成しています。 入所に部分(緑色)はできたのですが下側の黄色の部分がうまくいきません。 すみませんが、よろしくお願いします。 緑色の所の関数⇒=IFERROR(IF(OFFSET(A5,MOD(ROW()-ROW(A$5)+1,8)*-1,0)="","",INDEX(Sheet2!$B:$B,SMALL(INDEX((Sheet2!$C$2:$I$20<>LOOKUP(10^5,A$4:A4))*10^5+ROW(Sheet2!$C$2:$I$20),),MOD(ROW()-ROW(A$5)+1,8)),)&""),"") 黄色い部分の所に関数を教えていただきたいのですが よろしくお願いします。

  • エクセルの連続データをユーザー指定数を改行して表示

    いつもありがとうございます。 エクセル初心者です。時間なく困っておりますので、質問させて頂きます。 よろしくお願い致します。 (Sheet2)の連続したデータを(Sheet1 )で作成したユーザーフォームのコソボボックスから選択し、リストボックスにユーザー指定数を入力させ、【決定】を押すと (Sheet1) のA1~E1に格納 改行してA3~E3 改行してA5~E5 改行してA7~E7・・・のように指定数と決まった(右方向のオートフィル)と改行して数値を格納させてたく思っております。 =INDEX(Sheet2!$A:$A,COLUMN(A1)+(ROW(A1)-1)*5)のような関数ではなく、 VBAとユーザーフォームでお願い致します。 また画像のように【← →】で、コソボボックスの値が選択した状態から変更出来れば助かります。 そこから指定数が格納されるように希望です。 ※連続したデータは今後増える可能性ありです。 よろしくお願い致します。

  • オートフィルについて質問します

    オートフィルについて質問します エクセルでシート1の3列構成の表(1月分3列、2月分3列・・・・)を4列構成のシート2にコピーしてその表をオートフィルで24か月分の表を作るようにしたいのですが1月ごとに参照する列が1列づつ増えていってしまうのでまったく参照になりません。 シート1の『A1,B1,C1』『D1,E1,F1』をシート2のA1,B1,C1,D1(D1は空白)E1,F1,G1,H1(H1は空白)・・・・のようにオートフィル使えないでしょうか。 オフセットを使っても列番号は自動加算されないので1列ずつずれた参照になってうまくいきません。 ROWとかINDEXとか使わなくて出来ませんか。

専門家に質問してみよう