Excelでご相談します。今A列に文字列が入っており、改行の挿入により全てx行の文字列になっています。xの最大値は8です。隣のB列には1から8の整数が入力されています。


このとき、A列の文字列を、すぐ隣のB列の数値に該当する行のみを「赤い太字」にしたいです。
例えば、B2セルに5と入っていたら、A2の文字列の5行目のみ「赤い太字」にします。

よい方法がありましたら、どうぞ宜しくお願い致します。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/02/11 06:47:08
  • 終了:2015/02/18 06:50:03

回答(3件)

id:ceramic-cups No.1

世良満久回答回数27ベストアンサー獲得回数62015/02/11 07:52:31

ポイント34pt

条件付き書式で対応できると思います。
Excel2010で説明させていただきます。
ホームリボンの条件付き書式→セルの強調表示ルール→指定の値に等しい
次の値に等しいセルを書式設定→参照するセル座標を指定→書式を赤の文字に設定
複数の条件を設定したい場合は、新しいルールをクリックして同様に設定してください。

support.office.comに解説がありましたのでリンクよりご参照ください。
https://support.office.com/ja-jp/article/%E3%82%BB%E3%83%AB%E5%86%85%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B-09008eb0-0f56-44c5-beb2-2192aa833d5b

世良満久

id:miku1973

リンク先を見ましたが、本件の場合だとどのように設定すればよいのかわかりませんでした。引き続き回答をお待ちします。

2015/02/11 12:40:23
id:bnn No.2

bnn回答回数62ベストアンサー獲得回数172015/02/11 15:03:05

ポイント33pt

Excelではセル内の一部のみに自動的に書式を加える方法が用意されていません。


コメントにもありますが、VBAを使用すればできそうです。
英語ですが、使えそうな関数を作るコードがありました。
http://vbadud.blogspot.jp/2007/09/excel-vba-change-font-color-for-part-of.html


もしくは、お探しの方法ではありませんが、文字列の中から指定した行の文字列を切り抜くことならできます。
A1に文字列、B1に数字があるとして、任意のセルに

=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,CHAR(10),CHAR(1),B1-1)),FIND(CHAR(1),SUBSTITUTE(A1,CHAR(10),CHAR(1),B1))-FIND(CHAR(1),SUBSTITUTE(A1,CHAR(10),CHAR(1),B1-1)))

後はこのセルに条件付き書式でデータが入っていれば赤にする
簡単なのは「指定の数値より大きい」で数値を0にして書式を設定する方法ですかね。

ちなみに、CHAR(10)はExcelのデフォルトの改行コードですが、データの出力元によってはCHAR(13)の場合もあるので、CHAR(10)でエラーになる場合には(13)に変えてみてください。

id:TransFreeBSD No.3

TransFreeBSD回答回数657ベストアンサー獲得回数2632015/02/11 15:57:44

ポイント33pt
Option Explicit

' 参考 http://officetanaka.net/excel/vba/tips/tips11.htm
Sub Macro1()
    Const colText = "A" ' 表示文の列
    Const colIndex = "B" ' 指定行数の列
    Dim text As String ' 表示文のコピー
    Dim index As Variant ' 強調する行
    Dim chrStart As Long ' 強調する行までの文字数
    Dim chrLen As Long ' 強調する行の文字数
    Dim i As Long
    Dim j As Long
    For i = 1 To Cells(Rows.Count, colText).End(xlUp).Row ' 1行目から最終行のセルまで処理する
        text = Cells(i, colText).Value
        index = Cells(i, colIndex).Value
        chrStart = 1 ' 表示文1行目までの文字数は1
        If Not IsNumeric(index) Or index = 0 Then ' 指定行数が数値でないときは処理しない
            index = 0
            chrStart = 0
        End If
        For j = 2 To index ' 表示文の指定行数までの文字数を数える
            chrStart = InStr(chrStart, text, vbLf, vbBinaryCompare) ' chrStartを改行位置までの文字数にする
            If chrStart = 0 Then ' 改行がない=指定行数がないとき
                Exit For
            End If
            chrStart = chrStart + 1 ' 改行の次の文字(次行の先頭)までの文字数にする
        Next j
        If chrStart > 0 Then ' 改行がない=指定行数がないときは処理しない
            chrLen = InStr(chrStart, text, vbLf, vbBinaryCompare)
            If chrLen = 0 Then ' 改行がない=最終行のとき
                chrLen = Len(text)
            End If
            chrLen = chrLen - chrStart + 1
            With Cells(i, colText).Characters(Start:=chrStart, Length:=chrLen).Font
                .Color = RGB(255, 0, 0)
                .Bold = True
            End With
        End If
    Next i
End Sub
  • id:gong1971
    VBA(マクロ)を使用すれば出来そうですね。
    マクロの設定/使用方法などは分かりますか?
  • id:ceramic-cups
    正直VBAは初心者程度しか知識無いです、すみません。
    ご希望の仕様の詳細をお教え下さい、書式設定の機能で可能かどうか検討してみます。
    せら〆
  • id:ceramic-cups
    セルの強調表示ルールをクリックした後順番にセル座標と書式を設定するといった説明のつもりだったのですが、不十分だったようですねすみません。
    他にご要望に合ったマクロの回答が出ているようですので、そちらを試されたほうがご要望に近いと思います。ご確認下さい。
    世良満久

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません