
お世話になります。
以下のように配列Listを宣言し、
その中に数式を仕込みたい場合の記述方法をお聞きしたく思います。
Dim List As String
List = "A,B,C,数式"
私の場合、ここで記述する数式が以下になるのですが、
数式内に含まれるカンマ "," によって配列が分割されてしまいます。
数式 = "=OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0, -3)"
…分割後…
"=OFFSET(INDIRECT(ADDRESS(ROW()"
"COLUMN()))"
"0"
"-3)"
なんとかカンマをエスケープできるような記述方法を探しているのですが、
うまく見つかりませんので皆様にご教授いただきたく思い質問しました。
お手数をおかけしますが宜しくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あくまでもカンマを分割するという前提で
前のお二人が仰った方法を応用して、
最初の3つのカンマを他の文字に置き換えて、その文字で分割すれば良いですね。
Sub test()
Dim s1 As String
Dim s2 As String
Dim a As Variant
s1 = "A,B,C,D,E,F"
s2 = Replace(s1, ",", vbTab, , 3) '最初の3つのカンマをTABに置き換える
a = Split(s2, vbTab)
MsgBox a(UBound(a)) '=> D,E,F
End Sub

No.2
- 回答日時:
状況がよくわからないのですが、
List = "A,B,C,数式"
の部分をあなたが自由に設定できる立場なら
List = "A|B|C|数式"のように
区切り文字を数式で使用されていない文字にしてはいかがでしょうか。(例えば|とします)
分割は
分割データ=split(list,"|")
で可能です。
もし、あなたが自由に設定できない立場なら、
(listに設定する文字は、実はファイルから読んでいて、ファイルへ書き込むのは他の会社の場合等)
分割データを取得するとき、自前で構文解析をしながら、データの分割をするような関数を作る以外にないかと。
ご回答ありがとうございます。
同じくご指摘の通り、いくつか質問内容に不備がありました。
申し訳ございません。
補足に詳細を記載しておりますが、
タイトルと不一致の内容となってしまいましたので、
タイトルを改めて再投稿しようと思います。
お手数をおかけしました。
No.1
- 回答日時:
こんにちは
>以下のように配列Listを宣言し、
>Dim List As String
Listは普通の文字列型の宣言になってるけれど??
>数式内に含まれるカンマ "," によって配列が分割されてしまいます。
何をどうしたくて、何を行っているのかわかりませんが。文字列が勝手に分割されることはないと思いますので、何かの処理をしようとしたらそう解釈されちゃったってことなのでしょうか?
「配列」とあるので、その文字列をSplitで配列化しようとしているのでしょうか?
でしたら、区切り文字をカンマ以外に設定するのが一番簡単かと思います。
あるいは、数式内のカンマを別の文字にしておいて、分割(?=何かの処理)後にカンマに入れ替えるといった方法も考えられます。
普通に Array(A,B,C) の形式で配列を設定するのなら、そのままカンマが利用できるはずです。
Dim list() As Variant
list = Array("A", "B", "数式1,数式2,数式3,数式4")
とか。
(このような設定方法を取る場合は、型宣言をVariantにしておかないとうまくいかないようですが)
いずれにしろ、何をどう処理しているのかが不明なので、適切な回答にはならないと思いますけれど・・・
ご回答ありがとうございます。
ご指摘の通り、いくつか質問内容に不備がありました。
申し訳ございません。
補足に詳細を記載しておりますが、
タイトルと不一致の内容となってしまいましたので、
タイトルを改めて再投稿しようと思います。
お手数をおかけしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMPRODUCT関数を用いた最小値
-
ExcelのINDEXとMATCH関数でスピ...
-
エクセル 条件を指定した標準...
-
[エクセル]連続する指定範囲か...
-
【VBA】ユーザーフォーム リス...
-
数字配列データを画像に変換す...
-
エクセルで、絶対値の平均を算...
-
【VBA】配列に数式を仕込む方法...
-
DataSetから、DataTableを取得...
-
VB6.0 ファイルの一括読込み
-
ListBoxへの読み込み
-
Generic.Listに1次元配列の配...
-
配列がとびとびである場合の書き方
-
Dictionaryを使い4つの条件の一...
-
文字の場合でもA列の最終行の...
-
Access2010で二次元配列をプル...
-
INDEX(D:D,L3)の意味は?
-
array関数で格納した配列の型を...
-
Excelのセルの色指定をVBAから...
-
テキストボックスのvalueとtext...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
Excelのセルの色指定をVBAから...
-
DataSetから、DataTableを取得...
-
Excel オートフィルタのリスト...
-
Datatableへの代入
-
【VBA】ユーザーフォーム リス...
-
配列がとびとびである場合の書き方
-
VBAでの100万行以上のデータの...
-
二次元配列の中の各行の要素を...
-
スプレットシートのGetTextにつ...
-
.NET - 配列変数を省略可能の引...
-
VB6.0 ファイルの一括読込み
-
【VBA】配列に数式を仕込む方法...
-
iniファイルのキーと値を取得す...
-
配列のSession格納、及び取得方...
-
Split関数でLong配列に格納する...
おすすめ情報
申し訳ありません。
説明不足&変数宣言に関して勘違いがありました。
※宣言はVariantでなく、String型です。
説明を補足します。
入力規則(Validation)で、
変数Listに格納した文字列をリスト表示させようとしています。
現在、私の手元では以下のように記述しています。
…
Dim List As String
List = "A,B,C,=OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0, -3)"
If 条件 Then
Target.Validation.Add Type:=xlValidateList, Formula1:=List
End If
…
リストが適用されたセルを確認すると、
数式部分がカンマで分割されて表示されてしまいます…
なんとか数式を分割せずに適用させる方法はないでしょうか?