アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelの書式の設定についての質問なのですが….

Excelは簡単な関数が組める程度のレベルで,マクロは全くの初心者です.



1表のセル中の一部の文字(赤文字部分)を斜体にし,2表のようにしたいのです.



規則としては,『 』部分を除いた文頭から2単語と,"var."の後の1単語が斜体になるというところでしょうか.
"var."のない文も,あります.
『 』中のアルファベットは,様々な組み合わせがあります.


現在,赤文字になっている箇所は,目立たせるために赤にしたもので,元データは黒文字のみです.

もし,上記の条件が難しいようであれば,『 』部分を除いた文頭から2単語だけでも斜体にできると助かります.


データ数が大量のため手作業では厳しい状況です.

マクロに全く精通しておらず,果たしてマクロで作成できるものなのかどうかも判らないのですが,どうかご教授よろしくお願い致します.

「Excelセル中の一部文字を斜体にしたい」の質問画像

A 回答 (5件)

>B2~M2セルまで関数を入れ、コードを入力し、マクロを実行してみました。

←この方法でよいでしょうか?
マクロは一から作れるほど詳しくないので、そのように作っています。

>・全てに共通……『 』の次の英単語の1文字目が斜体にならない
数式で解説しているのに、なぜ、そのようになるかを考えてほしいです。
数式を修正することで対応可能と思われます

>・セル中で改行されているもの
セル内改行は見落としていました。
セル内改行の有無を調べる必要がありそうです。
方法は「var.」と同様ですが、セル内改行がいくつもある場合、
当方のレベルのマクロでは対応できません。

>・セル中に改行のないもの……全てが斜体なっている
少なくとも当方はセル内改行を入れない状態で、正常に働きました。

>マクロ初心者ですので、私の操作方法に問題があるかもしれません。
操作方法に問題はないはずです。

#1 ekayimさんの回答の操作を「マクロの記録」で記録し
不要なものは削除、および、繰り返し処理を追加、「var.」は条件分岐として追加してます。
英単語が分かれば、解読も容易です。
    • good
    • 0
この回答へのお礼

再度のご投稿ありがとうございます。

ご指摘のとおり、計算式を見直しましたところ、
F2セル 赤開始1 =E2+2 ← =E2+1とし、
G2セル 赤終了1 =FIND(" ",$A2,F2)-1 ← " " が "" となっていたので、そこを修正しましたところ、セル中に改行のないものについては、パーフェクトな結果が得られました。教えを乞う前に、自分でちゃんと計算式を理解すべきでした。申し訳ありません。
また、セル中に改行のあるものついても、最初と最後の対象単語が斜体にならないという、完成形に近いものですので、あとは手動でなんとかなりそうです。

大変勉強になりました。回答者の皆様方に、この場をお借りしてお礼を申し上げます。ありがとうございました。

お礼日時:2011/01/21 22:20

スマートではありませんが下記でどうでしょうか。


単語間にある半角スペースを区切り文字として利用しています。
対象セル範囲は実際に合わせて書き換えて試してください。

Dim c As Range
Dim txt As String
Dim buf As Variant
Dim s As Long
Dim l As Long
Dim i As Long
Dim n As Long

For Each c In Range("A1:A100")
txt = c.value
buf = Split(txt, " ")
For i = LBound(buf) To UBound(buf)
If InStr(buf(i), "』") > 0 Then
n = i
Else
If i - n <= 2 Then
s = InStr(txt, buf(i))
l = Len(buf(i))
Else
If InStr(buf(i), "var") > 0 Then
s = InStr(txt, buf(i + 1))
l = Len(buf(i + 1))
End If
End If
End If
If s <> 0 And l <> 0 Then
With c.Characters(Start:=s, Length:=l).Font
.FontStyle = "斜体"
End With
s = 0: l = 0
End If
Next
Next

#データをコピペすればテストに使えるような形で提供するようにしてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
また、データの提供方法が悪く、ご迷惑をおかけしております。
マクロを実行しましたところ、「コンパイルエラー SabまたはFanctionが定義されいません」というエラーメッセージが出て、セル中一行目一文字目の『 のみが斜体になるという結果となりました。
お恥ずかしいのですが、マクロ初心者のためエラーの解決方法がわかりません。
もし、お時間がおありのようでしたらさらなるご教示をいただきたくお願い申し上げます。

お礼日時:2011/01/21 06:10

勉強がてら挑戦してみました


といっても、関数中心
B2セル 文字数 =LEN(A2)

C2セル 』除 文字数 =LEN(SUBSTITUTE(A2,"』",""))

D2セル 』数 =B2-C2

E2セル 』の終わり位置 =FIND("♪",SUBSTITUTE(A2,"』","♪",D2))

F2セル 赤開始1 =E2+2
G2セル 赤終了1 =FIND(" ",$A2,F2)-1

H2セル 赤開始2 =G2+2
I2セル 赤終了2 =FIND(" ",$A2&" ",H2)-1

J2セル var.有無判定 =ISNUMBER(FIND("var.",A2))
K2セル var.位置=IF(J2,FIND("var.",A2),"")

L2セル 赤開始3 =IF(K2="","",K2+5)
M2セル 赤終了3 =IF(K2="","",FIND(" ",$A2&" ",L2)-1)

とやってあとはマクロの自動記録+アルファってことで
Sub Macro1()
Dim n As Long
Dim 終了の行 As Long
終了の行 = Cells(Rows.Count, 1).End(xlUp).Row

For n = 2 To 終了の行
  With Cells(n, 1)
  .Characters(Start:=Cells(n, "F").Value, _
  Length:=Cells(n, "G") - Cells(n, "F") + 1) _
  .Font.FontStyle = "斜体"
 
  .Characters(Start:=Cells(n, "H").Value, _
  Length:=Cells(n, "I") - Cells(n, "H") + 1) _
  .Font.FontStyle = "斜体"
 
  If Cells(n, "J").Value Then _
    .Characters(Start:=Cells(n, "L").Value, _
    Length:=Cells(n, "M") - Cells(n, "L") + 1) _
  .Font.FontStyle = "斜体"
  End With
Next
End Sub
「Excelセル中の一部文字を斜体にしたい」の回答画像3
    • good
    • 0
この回答へのお礼

いつもご回答いただき、ありがとうございます。

B2~M2セルまで関数を入れ、コードを入力し、マクロを実行してみました。←この方法でよいでしょうか?

結果なのですが、『 』部分は斜体になっていないのでOKなのですが、英単語部分が以下のようになってしまいました。

・全てに共通……『 』の次の英単語の1文字目が斜体にならない
・セル中で改行されているもの……1行目の頭の2単語が斜体にならない。var.の後の単語は斜体になっている
・セル中に改行のないもの……全てが斜体なっている

マクロ初心者ですので、私の操作方法に問題があるかもしれません。
もしお時間がおありのようでしたら、ご指摘いただければありがたいです。

お礼日時:2011/01/21 00:40

質問の画像は文字が小さくぼやけて読みにくい。

使わないでほしいぐらいだ。
セルの文字列をテキストで貼り付けてほしい。
ーー
手作業では多数回の操作になり、やる気がしない、時間がかかると言うものは、VBAを使うほかない。
そのVBAの経験がないのに、したいと望んでは、丸投げで、回答者を下請けにつかっていいることになる。
ーー
エクセルでは、VBAでも語(語句)をズバリとらえることさえ難しい。エクセルがワープロ的機能を主目的にしてないためだ。
ワードVBAが判れば、語句の分離は、やや、やりやすいかも。しかし1語目・2語目とかの判別・抽出は簡単でない。
ーー
一案は
A列の各セルで最終行まで繰り返す。
(1)セルの文字列の最初が『』なら、その次の(終わりまでの)部分でInstr関数でスペースをさがし、第1語、第2語の位置と文字数を割り出す。そしてその部分を斜体にする。
「ver」のあとは、Instr関数で「ver」の出現位置を割り出し、Instr関数でその後の最初のスペースを探し、その後の1語の位置と文字数を割り出し、斜体にする。
文字列の一部分の書体を変えるのは
http://www.big.or.jp/~seto/vbaref/vbaref3.htm など
の「 セルの文字列の一部だけフォントを変更する」のコードを参考にする。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
画像の件、見づらくて申し訳ありませんでした。
セル中に改行してある箇所のあることを、テキストの貼付けでは、うまく表現できなかったため、画像を貼付けてしまいました。以後気をつけます。
また、下請け云々のご指摘もおっしゃる通りで、返す言葉もありません。本来ならば、自分の使える機能を使って処理すべきものだと思いますが、限られた時間の中で、作業を終えなければならず、こちらにおすがりした次第です。
ですが、ご教示いただいたInstr関数も使えないレベルでマクロを教えていただこうなんて、やはり問題外ですね。かなり甘えていたようです。ご指摘ありがとうございました。

お礼日時:2011/01/20 23:52

マクロでは無いですが、これですかね?


斜体にしたい文字の左側をクリックしそのままマウスを移動し斜体にしたい文字を選択すると範囲が表されるので、ツールバーの斜体をクリック。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
3000件あるデータを短時間で処理しなければならず、ご回答頂いた方法ですと、かなりの時間がかかってしまいます。何かよい方法はないでしょうか?

お礼日時:2011/01/20 22:43

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

このQ&Aを見た人はこんなQ&Aも見ています