• 締切済み

EXCELのマクロにて、ゼロパティングをしたい

A列とB列に3バイトと4バイトの数字がずらっとはいっています。 A列の数値はA2からB列の数値はB2から入っています。、 A列には1ケタから3ケタまでの数が入り、桁数が足りない場合はゼロパティングします。 B列同じです。 やりたいことは、A列とB列の値を縦のセルごとに最終レコードまで結合していきたいのです。 これをVBAでやりたいのです。 入力値によって0の個数が変わる場合の処理がどうしても思い浮かびません。 どなたか知恵を貸していただきたいです。 過去ログに似たようなものがあったのですが、なかなか考えられませんでした。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 A列をD1、B列をD2に文字列結合してみました。 Sub sample() Dim wk() For i = 1 To 2 ReDim wk(Cells(Rows.Count, i).End(xlUp).Row - 1) For j = 2 To Cells(Rows.Count, i).End(xlUp).Row wk(j - 2) = Format(Cells(j, i), "000") Next With Cells(i, 4) .NumberFormat = "@" .Value = Join(wk, "") End With Next End Sub

回答No.1

セルの書式設定で「00#」とすればゼロパティングはできますが、これとは違うんでしょうか? >やりたいことは、A列とB列の値を縦のセルごとに最終レコードまで結合していきたいのです。 足すんじゃなくて結合? 「004」と「036」があったとしたら「004036」という形ですか?

関連するQ&A

  • セル内の数値の左側に0を追加して桁数を一致させる。

    個数が入力されている列が存在します。例えば、個数は6個2個と一桁のものもあれば、10個、2065個、のように二桁や四桁のものもあります。 この場合に、書式設定で、ユーザー定義の書式を利用して見た目の桁数を変更するのではなく、単純に0を追加して八桁に揃えたいのです。 00000006、00000002、00000010、00002065、としたいのです。 その理由として、A列に商品コード(13バイト)B列に個数(8バイト)のレイアウトが絶対であり、この二列を=CONCATENATE(A:A,B:B)で単純結合したいのです。 この時、ユーザー定義の書式変更でB列を8桁にしていると、結合時に0が消えて、レイアウトが崩れてしまいます。 これを回避するために、単純に個数の左側に0を追加し、8桁にそろえるための関数を探しています。 よろしくお願いします。

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • エクセルマクロで流し込み書き出しはできますか?

    エクセルでSheet1,2,3に入っている値を加工してSheet3に書き出すマクロを作りたいと思っています。 特にSheet1と2には縦一列にデータが並んでおり、それらを結合したいのですが個数が不特定のため困っています。 例えば Sheet1には縦1列に 10 11 12 13 ・ ・ ・ と数値が並んでおり、 Sheet2には縦1列に a1 a2 a3 a4 ・ ・ ・ と文字が並んでおり、 Sheet3には 固定文字列1 固定文字列2 が記載されています。 これらを組み合わせて、 固定文字列1 10,11,12,13 固定文字列2 ('a1','a2','a3','a4') という文字列をSheet4に書き出したいのですがマクロでどのように記述すればよいでしょうか。 数値も文字も個数は変動するので、何個であったとしても対応可能にしたいです。 数値はカンマ区切り、文字はアポストロフィ区切りで全体を括弧で囲みたいです。 また文字の個数は1000を超える場合もあるため、 固定文字列1 10,11,12,13 固定文字列2 ('a1','a2','a3','a3',・・・'a100') 固定文字列1 10,11,12,13 固定文字列2 ('a101','a102','a103','a104',・・・'a200') 固定文字列1 10,11,12,13 固定文字列2 ('a201','a202') のように100個毎に区切りたいです。 これを吐き出すマクロ作りたいのですがご存知の方、ご教授いただけますでしょうか。

  • エクセル 数値だけ抽出するには?

    エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか? 文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。 A列からb列のように変換したいのです。 A列          B列 PMID:_12345678    12345678 PMID:_123456     123456 宜しくお願いいたします。

  • エクセルのマクロで結合セルに値を貼り付けたい

    お世話になります。 マクロ初心者で本やネットで色々調べたのですが分からないため 教えていただけますと幸いです。 Sheet1にはB1:B3、B4:B6…と3行縦に結合された表があり、 Sheet2のA列には単独セルに商品の名前が入っております。 膨大な量のため、Sheet2のA列に入っている情報を Sheet1の縦に結合されたセルに一つずつマクロで転記したいと 考えております。 Range("B1:B100").Value = Range("A1:A100").Value のように記載すると、2個飛ばしで入力されてしまうので、 結合されている分飛ばされないで一つずつ転記したいのですが どのようにしたら良いでしょうか。

  • Excelのマクロで()内の文字を抽出して書き出したい

    HTMLにあるテーブルの部分をコピペして貼り付けたExcelファイルがあります。 A~Cまでの3列が埋まっている状態で、D以降の列は空欄です。 C列に123(1112)というように、数字(数字)の記載になっている部分があります。 ()の前と、中は必ず半角数字で、桁は1桁~5桁までと幅広い状態です。 この()内の数値をD~F欄に書き出したいです(縦3列のものを、横3列として書き出したい) 数字(数字)という記載のセルは、必ず縦に3つ並んでいますが C列は膨大なセル数なうえに、数字(数字)という記述以外のセルも間に入っております(数字のみのセルか、空欄のセルです) 3つ並んでいる部分のみを探して、()内の数値を抽出し、D~F列に書き出すことは可能でしょうか? 書き出す場所は、3つ並んでいるC列の最初のセルの横のD~Fだと助かります。 (数字(数字)がC6~8にあった場合、D6~F6に書き出される) なお、数字(数字)というセルはC列以外にはなく、4つ以上縦に並ぶ事もありません。 さすがにこのような内容を実行するのは不可能でしょうか? もし可能でしたら、マクロを組んでいただきたいです・・・よろしくお願いします。

  • エクセルのマクロについて

    マクロ初心者です。 エクセルであるセルの数値に100掛けた結果を同じセルに表示させたい場合はどういったVBAを使えばいいのでしょう。他のセルに一旦100掛けた数字を入れて、また元のセルに戻すという事は無しで・・ 例えば「0.25」をいうセルにマクロを流して「25.00」(小数点以下の桁数にはこだわりません)に変えたい場合です。

  • Excelでデータの各値とその個数を生成するには

    Excelでデータの各値とその個数を生成するような機能はないでしょうか? 例えば、Excelの A列に1,2,3,2,5,3,2という数値が入力されていた場合に、 B列に1,2,3,4,5という値と、 C列に各値の個数である1,3,2,0,1という値が 生成されるような機能はありますでしょうか。 できれば、A列のデータから、 添付図のグラフを生成させたいです。 なお、上記の例のA,B,C列は一例で、データの数も7個だけですが、 実際には、数百あり、桁数も1~4桁の値です。 よろしくお願いします。(Windows10,Excel2016)

  • EXCEL セル内の数値から、5桁目だけを抽出する方法について

    EXCELシートのセル内に、以下のような30桁からなる数値が入力されている 列が複数あります。 この列内の数値の右端から「5桁目」だけ、または左端から「10桁目」だけを 抽出したいと思っているのですが、EXCELの仕様で数値の先頭にある「0」は 表示されないため、各セルごとに表示されている数値の桁数はバラバラです。 数値の先頭に「0」が付いているセルが多数あり桁数が不揃いなことと、 数値が30桁もあるため、セルの数値表示が「1E+29」のように「E+29」で表示 されてしまっており、うまく数値を抽出することが出来ません。 ◆元データ   「列1」     (1) 1234567890  →(本当は30桁:000000000000000000001234567890)    (2) 111111111100000000001111111111   (3) 1      →(本当は30桁:000000000000000000000000000001)  (4) 123456789012345678909999999999  ◆右端から5桁目だけを抽出する   「列1」      (1)  6      (2)  1      (3)  0      (4)  9   お手数お掛けいたしますが、ご指導下さいますよう宜しくお願い致します。

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

専門家に質問してみよう