Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4689 / 13646 ツリー ←次へ | 前へ→

【55178】数値を各セルに分ける koshimizu 08/4/21(月) 9:32 質問[未読]
【55179】Re:数値を各セルに分ける VBWASURETA 08/4/21(月) 10:10 発言[未読]
【55180】Re:数値を各セルに分ける VBWASURETA 08/4/21(月) 10:21 発言[未読]
【55181】Re:数値を各セルに分ける koshimizu 08/4/21(月) 10:38 質問[未読]
【55182】Re:数値を各セルに分ける VBWASURETA 08/4/21(月) 10:55 発言[未読]
【55183】Re:数値を各セルに分ける Yuki 08/4/21(月) 14:28 発言[未読]
【55184】Re:数値を各セルに分ける koshimizu 08/4/21(月) 16:45 お礼[未読]

【55178】数値を各セルに分ける
質問  koshimizu  - 08/4/21(月) 9:32 -

引用なし
パスワード
   おはようございます。
口座番号等でA列の数値を各セルに分けたいのですが、下記数式で分けようとしました。桁数は7桁を予定していますが、桁数が少ない場合前に0が表示されてしまいます。これを空白にしたいのですが。
また、過去ログからマクロも探して見ましたが、私には桁を合わせることが出来ません。宜しくお願いします。

A列   C D E F G H I列
1234567    1 2 3 4 5 6 7
1234    0 0 0 1 2 3 4
12345    0 0 1 2 3     4 5

[=INT(MOD(SIGN(A2)*A2/1,10))

Dim st As String, st1 As String
Sheets("Sheet1").Select
Range("A1").Select
For s = 1 To 10  
st = ActiveCell.Offset(1, 0).Value
st1 = StrConv(st, vbNarrow)
For I = 1 To Len(st1)
  Cells(s + 1, I + 2).Value = StrConv(Mid(st1, I, 1), vbWide)
Next I
ActiveCell.Offset(1, 0).Select  
Next s

【55179】Re:数値を各セルに分ける
発言  VBWASURETA  - 08/4/21(月) 10:10 -

引用なし
パスワード
   ▼koshimizu さん:
おはようございます。

大体出来てると思いますが。
後1文字を取得(何故Wideにしているのかは謎ですけど・・・)したら
直接入れないようにして変数で判定するだけで良いだけな気がしますよ?

>For I = 1 To Len(st1)
>  Cells(s + 1, I + 2).Value = StrConv(Mid(st1, I, 1), vbWide)
>Next I


それと気になったのですけど
CellsメソッドのS + 1はSだけで良くないですか?
1行下を見る気がします・・・

【55180】Re:数値を各セルに分ける
発言  VBWASURETA  - 08/4/21(月) 10:21 -

引用なし
パスワード
   もう一つ修正点です。

st = ActiveCell.Offset(1, 0).Value

のところは

st = ActiveCell.Value
ですね。

そうしないと、これも1行下見ていてずれています。

【55181】Re:数値を各セルに分ける
質問  koshimizu  - 08/4/21(月) 10:38 -

引用なし
パスワード
   VBWASURETA さん
おはようございます。
アドバイスありがとうございます。
>st = ActiveCell.Offset(1, 0).Value
>のところは
>st = ActiveCell.Value
>ですね。
>そうするとCellsメソッドのS + 1はSだけで良くないですか
わかりました。実行して見ました。

C列から表示でなくI列を1の位として表示することが出来ません。
宜しくお願いします。

【55182】Re:数値を各セルに分ける
発言  VBWASURETA  - 08/4/21(月) 10:55 -

引用なし
パスワード
   それは固定でも良いのですか?

簡単にはゼロ判定だとセルに入れない条件を応用して
例えばA列"1234567"と"123"があったとします。
それをA列"1234567"と"0000123"とすれば合うはずですよね?
で、関数はFormat関数を使ってFormat(st1,"0000000")で良いと思いますけどね

【55183】Re:数値を各セルに分ける
発言  Yuki  - 08/4/21(月) 14:28 -

引用なし
パスワード
   ▼koshimizu さん:
>おはようございます。
>口座番号等でA列の数値を各セルに分けたいのですが、下記数式で分けようとしました。桁数は7桁を予定していますが、桁数が少ない場合前に0が表示されてしまいます。これを空白にしたいのですが。
>また、過去ログからマクロも探して見ましたが、私には桁を合わせることが出来ません。宜しくお願いします。

こんにちは。

123456 を 654321 に並び替えて
6〜を最後のセル〜へ

' A列の最後まで
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
  ' 12345 -> 54321 に変更
  s = StrReverse(CStr(Cells(i, 1).Value))
  ' 54321 の順に
  For j = 1 To Len(s)
    ' I列〜C列へ向かって
    Cells(i, 10 - j).Value = Mid(s, j, 1)
  Next
Next

【55184】Re:数値を各セルに分ける
お礼  koshimizu  - 08/4/21(月) 16:45 -

引用なし
パスワード
   Yuki さん
こんにちは。

>123456 を 654321 に並び替えて
>6〜を最後のセル〜へ
StrReverse 関数
指定された文字列の文字の並びを逆にした文字列を返します。

>' A列の最後まで
>For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
>  ' 12345 -> 54321 に変更
>  s = StrReverse(CStr(Cells(i, 1).Value))
>  ' 54321 の順に
>  For j = 1 To Len(s)
>    ' I列〜C列へ向かって
>    Cells(i, 10 - j).Value = Mid(s, j, 1)

ありがとうございます。
私にはまったく気がつきません(文字の並びを逆にした文字列)
I列〜C列へ向かって表示の方法
コードはもちろんのこと考え方も
本当にありがとうございます。使用させていただきます。

4689 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free