Excel VBA質問箱 IV

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

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


10956 / 13644 ツリー ←次へ | 前へ→

【18925】つまっています・・・ いるか 04/10/16(土) 14:17 質問[未読]
【18926】Re:つまっています・・・ Kein 04/10/16(土) 14:30 回答[未読]
【18927】Re:つまっています・・・ ちゃっぴ 04/10/16(土) 14:34 回答[未読]
【18956】Re:つまっています・・・ [名前なし] 04/10/17(日) 16:37 回答[未読]

【18925】つまっています・・・
質問  いるか  - 04/10/16(土) 14:17 -

引用なし
パスワード
   はじめまして。
よろしくお願いします。
まず、
123
456
789
みたいなデータがあって、それを
321123
654456
987789
っていう感じにしたいんですけど、どのような操作をすればよいのでしょうか?
sかなり初歩的かもしれませんが、つまっています。
どうぞよろしくお願いします。

【18926】Re:つまっています・・・
回答  Kein  - 04/10/16(土) 14:30 -

引用なし
パスワード
   A列で数値を入力している範囲を対象とすると

Sub test()
  Dim C As Range
  Dim RSt As String
 
  For Each C In Range("A:A").SpecialCells(2, 1)
   RSt = StrReverse(C.Value)
   C.Value = CLng(RSt & C.Value)
  Next
End Sub

【18927】Re:つまっています・・・
回答  ちゃっぴ  - 04/10/16(土) 14:34 -

引用なし
パスワード
   このような場合、Pointは数値を数値として扱わず、
文字列として扱うことです。

文字列として扱えば、Mid関数で一文字毎取り出すことができます。

Dim strTarget As String
Dim i As Long

strTarget = "123"

For i = 1 to Len(strTarget)
  Debug.Print Mid$(strTarget, i, 1)
Next i

こんな感じで、数字一文字づつ取り出すことができます。

あとは、For 〜 NextステートメントにStepを指定して
逆(大きいほう)からループさせて、元の文字列と
結合してやればいいでしょう。

【18956】Re:つまっています・・・
回答  [名前なし]  - 04/10/17(日) 16:37 -

引用なし
パスワード
   ▼いるか さん:
一の位を10万倍したのと
十の位を1万倍したのと
百の位を1000倍したものを
もとの値に足す。

(123 Mod 10) * 100000 + Int((123 Mod 100) / 10) * 10000 + Int(123 / 100) * 1000 + 123 = 321123

という考え方もあります。

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