• 締切済み

ひとつのセル内で文字の位置を換える方法

お世話様です。 EXCEL2003で、マクロをつかって下記の様に複数のパターンを一括で×の位置を揃えたいのですが可能でしょうか? ○ 150×100×200 → ○ 150× 100× 200 □□ 50×30 → □□ 50× 30 △△△ 1000×1000×2000 → △△△ 1000× 1000× 2000 ど素人で申し訳御座いませんが、ご指導願います。

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

ここまで付き合ってもらえてよかったですね。普通ならもうあきれ返られてそのままか、いい加減にしろと怒られてそのままになるんですよね。 まだまだ、あいまいなところがあって、あなたに聞いてもあいまいさを解決するのは面倒なので、こちらでこうですよときめて処理をかきます。 以下は、これまでのあなたとのやり取りの範囲内で判明したことと、必要なことです。 1.このブックで使用するフォントはプロポーショナルではなく固定ピッチのフォントにしてください。そうしないとたての位置がずれてきちんとは揃えられません。 プロポーショナル   MSP明朝、MSPゴシックなど。Pがついているもの。Pがなくてもプロポーショナルなものもある。 固定ピッチ      MS明朝、MSゴシックなど。Pがついていないもの。Pがなくても固定ピッチなものもある。 2.データは必ず下記のように2行1セットになっている。 W□D□H ●●□▲▲▲×▲▲▲×▲▲▲ 3.▲の桁数は、最大4桁で、4桁未満のときはその前にロか×がくる。 4.データの範囲に空白行はない。 5.●●●●●●●●●●●●●●●の行は1行だけ独立していることはない。(2行1セットということ) 6.データセットの1行目は、WDHいずれもないか、WDH,WH,Wのどれかがあり、この順序である。H,D,WD,HDなどはない。 この条件ではなくても、はっきりわかればちゃんとプログラムできるが、今回はもうこれ以上やる気はありませんが、行きがかり上1回だけ質問を受けます。 以上の条件で下記のコード、自分の条件に合わせて適当に変更してください。 Sub test() r = 5  'データ行先頭 c = 4  'データ列 ustr = Cells(r, c) lu = Len(ustr) Do While lu <> 0 nw = InStr(1, ustr, "W") nd = InStr(1, ustr, "D") nh = InStr(1, ustr, "H") If nw <> 0 And nd = 0 And nh = 0 Then ustr = String(17, " ") & "W  " Cells(r, c) = ustr ElseIf nw <> 0 And nd = 0 And nh <> 0 Then ustr = String(11, " ") & "W" & String(5, " ") & "H  " Cells(r, c) = ustr ElseIf nw <> 0 And nd <> 0 And nh <> 0 Then ustr = String(5, " ") & "W" & String(5, " ") & "D" & String(5, " ") & "H  " Cells(r, c) = ustr ElseIf nw = 0 And nd = 0 And nh = 0 Then End If dstr = Cells(r + 1, c) ld = Len(dstr) n = 1 n1 = InStr(n, dstr, "×") n2 = InStr(n1 + 1, dstr, "×") If n1 = 0 And n2 = 0 Then dstr = Left(dstr, ld - 4) & String(20 - ld, " ") & Right(dstr, 4) ElseIf n1 <> 0 And n2 = 0 Then nr = ld - n1 strl = Left(dstr, n1 - 1 - 4) ll = Len(strl) strr = "×" & String(5 - nr, " ") & Right(dstr, nr) lr = Len(strr) strm = String(20 - ll - lr - 4, " ") & Mid(dstr, n1 - 4, 4) dstr = strl & strm & strr ElseIf n1 <> 0 And n2 <> 0 Then strl = Left(dstr, n1 - 1 - 4) & String(8 - (n1 - 1), " ") & Mid(dstr, n1 - 4, 4) strm = "×" & String(5 - (n2 - n1 - 1), " ") & Mid(dstr, n1 + 1, n2 - n1 - 1) nr = ld - n2 strr = "×" & String(5 - nr, " ") & Right(dstr, nr) dstr = strl & strm & strr End If Cells(r + 1, c) = dstr r = r + 2 ustr = Cells(r, c) lu = Len(ustr) Loop End Sub

wildels
質問者

お礼

大変ご親切対応して頂き、本当に有難う御座いました。 とても参考になりました。 これからはこのサイトを頼らなく済む様に がんばって勉強します。 御忙しい所、本当に有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

ANo.1 です。 揃えるというイメージはいくらかわかってきましたが、 申し訳ありませんが、まだ理解できないところがあります。 「 W□D□H ●●□▲▲▲×▲▲▲×▲▲▲ 」 のようなデータが、2段(上下2つのセル)にあるのですか。 それとも、1つのセルで2段になっているのですか。 あるいは、 データはどちらか(上か下か)1つなのですか。

wildels
質問者

補足

早速の御回答有難う御座います。 「 W□D□H 」 で全角20文字が入る一つのセルです。 2段(上下二つのセル)です。 これ以外にも 「 ●●●●●●●●●●●●●●● 」 と文字のみのセルが存在し、このようなセルは、 特に編集する必要はないので、 「 W□D□H ●●□▲▲▲×▲▲▲×▲▲▲ 」 という様なパターンを検索して、 「 □□□□□W□□□□□D□□□□□H□□ ●●□□□▲▲▲×□□▲▲▲×□□▲▲▲ 」 の様に上段のW・D・Hを下段の数字(▲の百の位の位置)に くる様にスペースを入れたいと思っております。 はじめより、条件が増えまして、申し訳御座いませんが、 マクロを組む事が可能であれば、教えて下さい。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

ANo.1 ですが、 やりたいことはVBAでできると思いますが、 まだ、どういうものをどのようにしたいのか意図が伝わりません。 「 ○____150×_100×_200 □□_________50×__30 △△△_1000×1000×2000 」 は、はじめのデータですか。 だとしたら、 これをどうしたいのですか。 「×の位置を揃えたい」といいますが、どういう風に揃えたいのですか。空白を削除したいのですか。

wildels
質問者

補足

御回答有難う御座います。 質問内容がおかしくて、申し訳御座いませんでした。 改めて、質問させて頂きます。 元のデーターは、左詰めで下記の様にあるとします。 (スペースを□、文字を●、数字を▲とします。※実際はスペースに□となっていません) 「 W□D□H ●●□▲▲▲×▲▲▲×▲▲▲ 」 この状態から下記の様に編集したいのですが 「 □□□□□W□□□□□D□□□□□H□□ ●●□□□▲▲▲×□□▲▲▲×□□▲▲▲ 」 上記の様に文字(●)は全角1~4文字までで、WとDとHは 百の位のちょうど上にくる様にしたいのです。 一つのセルは全角20文字です。 この他のパターンとしては、 「 W□H ●●●●□▲▲▲▲×▲▲▲▲ 」 だとすると 「 □□□□□□□□□□□W□□□□□H□□ ●●●●□□□□□□▲▲▲▲×□▲▲▲▲ 」 「 W ●●●□▲▲▲▲ 」 だとすると 「 □□□□□□□□□□□□□□□□□W□□ ●●●□□□□□□□□□□□□□▲▲▲▲ 」 という具合に複数のパターンを一度に揃えるマクロの組み方を教えて下さい。 度々で真に申し訳御座いませんが、何卒宜しく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

ANo.1の方の方法ならば Cells(1, 1).Value = Replace(Cells(1, 1).Value, "×", "× ") 後は(1,1)の部分を適当にループするなりすればよいのでは。

全文を見る
すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

どうしたいのか、意図が伝わりません。 >○ 150×100×200 → ○ 150× 100× 200 ×のつぎにスペースを入れたいということですか。

wildels
質問者

補足

回答有難う御座います。 質問の時は、×にあわせてスペースを入れて入力したのですが・・・。 イメージは、スペースを_をつけさせて頂きますと下記の様な感じです。 ○____150×_100×_200 □□_________50×__30 △△△_1000×1000×2000 ○、□、△はすべて全角(文字数は一定ではない状態)となります。 お手すきの時で構いませんので、ご指導の程宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • スペースを使わず文字位置を揃える方法

    素人な者で大変申し訳ありません 以下のように、複数行の文字位置を揃えるタグはどうなるのでしょうか? (下の例は揃っていませんが・・・) 1.あ        :ABC 2.abc       :ABC 3.あいう      :ABC 4、えお       :ABC のように、空白部にスペースを使わずに文字位置を揃える方法です ワードなどの「tabキー」の役割をするタグなんてありますか? ご教示の程、宜しくお願い致します 以上

    • ベストアンサー
    • HTML
  • EXCELで、複数シートの同じセルを一覧にして表示する方法

    EXCELで、複数シートの同じセル(たとえば、複数シートのB5)を、べつの1枚のシートに特定の列に表示する方法を教えてください。シートには名前が付いていますが、コピーしたい順に左から並んでいます。 下記にINDIRECT関数を使用する方法が記載されていましたが、マクロを使用した方法を教えてください。 マクロに関しては全くの素人ですが宜しくお願いいたします。 http://oshiete1.goo.ne.jp/qa1727203.html

  • テーブルタグ内の文字位置を統一する方法について

    ひとつのページにある複数のtableタグのうち、ひとつだけタグ内の文字位置を一括で統一する方法を教えてください。<td>タグにvalign="top"などと一つずつ記載していくしかないのでしょうか。 たとえば、とあるページに下記の2つのテーブルタグがあるとして <table border=1 width=5> <tr><td>適当</td> </table> <table border=1 width=5 この場所で一括設定する方法="知りたいです"> <tr><td>このテーブルだけ</td> <td>全部</td>  <tr><td>文字位置を上で</td>  <td>統一したいです</td> </table>

    • ベストアンサー
    • HTML
  • 複数のセル一括削除

    エクセルでランダムに位置する セルのデーターを一括削除できるようにしたいのですが 初心者なので、マクロの登録の仕方もわかりません。     宜しくお願いします。

  • エクセルでセルの位置を求める

    エクセルの表から複数の条件に合ったセルの位置を求めたいのですが・・・ たとえば ・|A|B| 1|3|1| 2|3|2| 3|5|1| 4|5|2|<--この行(4)を求める 5|6|1|・・・・ ・・・・・ の様な表の場合A列が5でB列が2の行(この場合4)を求めたいのですが よろしくお願いいたします。

  • EXCELで指定したセル位置にジャンプ

     EXCELの同じワークシート内で指定したセル位置にジャンプ出来るような設定がしたいのですが マクロではなく、ハイパーリンクをクリックすれば指定のセルに飛ぶイメージです。 EXCELにお詳しい方お教えください。

  • EXCELでセル内の文字の書式変更の仕方を教えてください

    EXCELで指定した複数のセルの文字列のうち、頭の数文字のみ書式を変えたいと思っています。 ひとつだけであれば変えたい文字の部分を選択し、書式変更すればいいのですが、複数ある為一括で変更出来る方法がないか探しています。 そこで何かやり方があれば教えてください。マクロでもかまいません。 宜しくお願いします。 あいうえお…はそのまま。(1)、(2)、(3)のみ書式変更      A       B      C 1 (1)あいうえお (1) A  (1) 1 2 (2)かきくけこ (2) B  (2) 2 3 (3)さしすせそ (3) C  (3) 3

  • エクセルに貼り付けてある画像のセル位置

    お世話になります。 WSHでエクセルを開き、使用されている画像を取得しました。 Worksheets.Item(1).Pictures.Item(1) これからTopとLeftで画像の位置を取得する事が出来たのですがその位置を基準として下にあるセルの位置を取得したいのですが可能でしょうか? そのほかにもA画像とB画像の2種類が複数コピーされて作成されていますが、それらの名前の取得も出来ますでしょうか? 最終的に出したい結果は A1 A画像 B2 A画像 D11 B画像 E4 A画像 のような感じです。 どちらか一つでもわかる方、教えてください よろしくお願いします。

  • 文字列一括置換ソフトを探してます

    文字列一括置換ソフトを探してます・・・って書くと、Vectorに行けばいっぱいあると言われそうですが、ちょっと条件が特殊です。 ・複数(多分500~1000個)のテキストファイルの指定文字列を一括置換したい(ここまでは普通) ・対象の文字列の置換パターンが3万件(苦笑) ワイルドカードなどではなく、3万の単語を別の3万の単語に置換したいのです。 (プログラムの変数を、ネーミングルールを変えたために総入れ替えする・・・と考えて頂ければ分かっていただけるでしょうか) 10件くらいのパターンを連続して置換するソフトは見つかったのですが、3万件となると・・・。 (そもそも3万件のリストをよく作ったもんだ) UNIXにsedというコマンドがあるというのは聞いたことがあるのですが、Windows(&DOS)しか触ったことがないので、どうすれば良いのか分かりません(私はプログラマじゃありません)。 なお、同じネタでエクセルのワークシートのセルを置換する必要があるのですが、こちらは自作マクロで対応しています。 もし適当なソフトが見つからなければ、エクセルマクロの作成を検討しています。 (マクロでテキストファイルの読み込みはやったことがあるのですが、書き出しは多分やったことがない) 置換リストはエクセルで作成しているので、リストはソフトに応じた形式で準備できると思います。 以上、よろしくお願いいたします。

  • PNGをアクティブシートに挿入するマクロについて

    Excelマクロブックと同じフォルダ内にある複数のPNGファイル(画像)を、 このマクロブックのアクティブシートに一括で挿入する(場所はどこでも大丈夫です)マクロの書き方を教えて欲しいです。 質問が分かりづらかったら申し訳ありません。 どなたかご教授いただければ幸いです。

このQ&Aのポイント
  • EPSON EP-880ARで片面印刷後に給紙し両面印刷になってしまう問題について解決方法を教えてください。
  • EPSON EP-880ARの設定を変更して片面印刷と両面印刷を切り替える方法について教えてください。
  • EPSON EP-880ARの印刷設定で片面印刷を選択したにもかかわらず、給紙後に自動的に両面印刷されてしまう問題を解決したいです。
回答を見る