人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: yoshifuku
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● 世良満久
●34ポイント

条件付き書式で対応できると思います。
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

世良満久


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

2 ● bnn
●33ポイント

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)に変えてみてください。


3 ● TransFreeBSD
●33ポイント
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
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ