▽1
●
a-kuma3 ●300ポイント ベストアンサー |
式でやるとしたら、こんな感じです。
=IF(ISERROR(FIND("【長い】",A1)),A1,LEFT(A1,60))
もしくは、
=IF(ISERROR(FIND("【長い】",A1)),A1,LEFTB(A1,60))
最初の LEFT は文字数。半角英数もひらがな漢字も1文字です。
二番目の LEFTB はバイト数。
全角だけだと30文字になります。
"【長い】" の文字の判定が要らないのであれば、LEFT もしくは LEFTB だけで OK です。
60文字未満はそのまま表示されます。
=LEFT(A1,60)
空白セルの場合は「0」が返されるようですが。
この空白セルも、空白セルのまま返す、ということはできないでしょうか?
式を、以下のようにしてください。
=IF(ISERROR(FIND("【長い】",A1)),IF(ISBLANK(A1),"",A1),LEFT(A1,20))
Sub main() Dim a As Long For a = 1 To Rows.Count If Cells(a, "A") = "" Then Exit For If InStr(Cells(a, "A"), "【長い】") > 0 Then Cells(a, "A") = Left(Cells(a, "A"), 60) End If Next a End Sub
お二人ともありがとうございます。
a-kuma3さんもきゃづみぃさんもどちらもベストアンサーなのですが、一人しか選べないので、早く回答いただいたa-kuma3さんの方にさせていただきました。私は返事が遅くなったのにすみません・・・(^_^;)