次の方法で共有

Vlookupで抽出された文字列の書式を、改めて関数(あるいはマクロ)で自動設定しなおしたい

Anonymous
2011-05-18T12:33:39+00:00

色々やってみましたが初心者のため力及ばず、ギブアップです。是非教えて下さい。

vlookupで抽出された文字列のうち、4ケタ以上の数字(文字列設定別途済み)は、2ケタ目以降が全て上付きになるべきデータです。

1800、であれば「1の800乗」ということになります。この設定となる4ケタの数字(文字列)以外は、1桁の数字があるだけです。

これが1列に混在しているデータです。

「もし4ケタ以上の文字列であれば、左から2文字目以降を上付きに設定する」という式が、うまくいきません。

どうかお知恵を貸して下さい。よろしくお願いします!

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-05-20T15:21:50+00:00

例えば、文字数で分岐させるなら、IF文を使います。

(他にもSelect Case文とかも使えますが)

Sub aaa()

Dim wLn As Long

wLn = Len(ActiveCell.Text)

If wLn = 4 Then

   ActiveCell.Characters(2, 4).Font.Superscript = True

Else

   If wLn = 5 Then

      ActiveCell.Characters(3, 5).Font.Superscript = True

   Else

      ActiveCell.Characters(4, 10).Font.Superscript = True

   End If

End If

End Sub

また、桁数に関係なく、2ケタ目以降をというなら

ActiveCell.Characters(2, 10).Font.Superscript = True

とか書いても大丈夫です。

ただ、マクロで細かい操作をされるのでしたら、こういうところで断片的に仕入れるのではなく、VBAの入門書を一冊購入されて基本的な操作を勉強してください。

ただ、気を付けて頂きたいのは、初歩の本はたいていマクロ記録と使えばできます的な事を書いてあることが多いようです。

マクロ記録はプロパティやメソッドを調べるには便利なのですが、あくまでも手動操作をコピーするだけであり、マクロの通常の形は覚えられません。(そこから入るとむしろ悪い癖が付くと思ってます)

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-05-27T07:52:22+00:00

    y sakuda さん、アドバイスありがとうございます。

    マカリ さん、こんにちは。

    y sakuda さんよりいただいたアドバイスが参考となったようですね。

    同じような情報をお探しの方にもご参考いただけるよう、今回は私の方で \[回答としてマーク\] をいたしました。

    マカリ さんの方でも参考になったと思ったら次回は [回答としてマーク] をつけてみてくださいね。

    次回もぜひ Answers をご利用ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-05-23T14:01:23+00:00

    y sakudaさま

    ありがとうございました!

    おかげ様で期日にも間に合い、大変助かりました。。

    >ただ、マクロで細かい操作をされるのでしたら~

    のアドバイスも本当にありがとうございました。 

    やっぱり自分で作った達成感みたいなものも確かに欲しいですしね。

    地道に勉強していきたいと思います。また教えてください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-05-20T13:13:50+00:00

    y sakuda様

    ありがとうございました(お礼が遅くなってすみません)。

    実はy sakudaさまの 

    >式によって計算される(Vlookupで表示もその部類です)セルは仮に書式が文字列に設定されていたとしても 

    のコメントが劇的にヒントとなり(要するに、文字列として認識されてないんだーと思い至り)、

    =concatenate("該当数値セル"," ")

    で数字の末尾に半角スペースを入れ、強引に文字列化し、

    出た結果を値複写し、以下を実行することで何とかなりました。。

    ActiveCell.characters(2,4).Font.Superscript = true

    (もちろん上記もこちらでの情報をどうにか応用しただけですが)

    ただ、「4ケタ」しかないのは現在たまたまで、

    今後5ケタ以上の数値が出てくる可能性もありまして、その場合、

    「もしも4ケタなら」「5ケタ」なら(10300=10の300乗)、と分岐させて

    違う結果を出す方法がまだわかりません。。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2011-05-19T00:36:29+00:00

    そんなことはできないと思います。

    まず、数値に関しては部分書式の設定はできません。

    また、式によって計算される(Vlookupで表示もその部類です)セルは仮に書式が文字列に設定されていたとしても

    部分書式の設定はできないようです。(マクロでもと言う意味です)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません