人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL VBAについて教えてください。
今、配列で10桁の配列に小数点の数字をいれており、それを再度
結合したいのですがどうコーディングするのがいいのでしょうか。
例)
-12.34567 ・・・変数A
桁数 3桁
変数Aには1こづつ記号、数値が入っていて
それを桁数3桁迄に切り直す。
-12.3

なおMIDは使わずに-から一桁ずつ結合していきたいのですが、、


Dim A(10) As String


基本的なことで申し訳ありません。

よろしくお願いいたします。

●質問者: sinrabanshyo
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ

>なおMIDは使わずに-から一桁ずつ結合していきたいのですが、、

MIDは 分割です。
結合は & です。

A & B

AとBの変数を結合します。


sinrabanshyoさんのコメント
すいません間違えました。結合する配列(変数)は決まっていない条件ではどうすればいいのでしょうか?

きゃづみぃさんのコメント
>結合する配列(変数)は決まっていない条件ではどうすればいいのでしょうか? 決めてください。 どういう条件で 結合するのか わからなければ 誰もどうしようにもありません。

2 ● うぃんど

サンプルが-12.34567だけなので「MIDを使わずに」の理由がわからないのだけど、
マイナスや小数点が存在する場合としない場合があるのでしょうか?

対応としては、
自作関数にすればいいだけだと思いますので適当につくってみました
自作関数に配列変数を渡して処理させる例として元の配列をいろいろ作って、
やってみてくださいな

Sub main()
 Dim a(10) As String: ' 元の配列
 Dim a2 As String: ' 結合結果を入れる変数
 
 a(0) = "-"
 a(1) = "1"
 a(2) = "2"
 a(3) = "."
 a(4) = "3"
 a(5) = "4"
 a(6) = "5"
 a(7) = "6"
 a(8) = "7"
 a(9) = ""
 
 a2 = MySubstr(a(), 3): ' 数字3文字が残るようにする場合
 MsgBox (a2): ' 結果出力
 a2 = MySubstr(a(), 5): ' 数字5文字が残るようにする場合
 MsgBox (a2): ' 結果出力
End Sub

Function MySubstr(s() As String, n As Long) As String
 Dim m As Long: '要素数
 Dim i As Long: 'ループカウンタ
 Dim c As Long: '数字が何文字出てきたかのカウンタ
 
 m = UBound(s) - 1
 c = 0
 MySubstr = ""
 For i = 0 To m
 MySubstr = MySubstr & s(i)
 If InStr("0123456789", s(i)) > 0 Then
 c = c + 1
 If c = n Then Exit For
 End If
 Next i
End Function

sinrabanshyoさんのコメント
ありがとうございます。 とても参考になりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ