お世話になります。
以下のように配列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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- Excel(エクセル) substitute関数についての質問です 3 2023/06/21 11:57
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
VBAで配列の計算
Excel(エクセル)
-
ExcelVBAの配列変数で一括でセルに数式を挿入する方法
Visual Basic(VBA)
-
-
4
Excelの入力規則のリストにカンマを表示したい
Excel(エクセル)
-
5
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
6
ExcelのVlookup関数で一致した文字のセルの番地を取得する方法
その他(Microsoft Office)
-
7
VBAにて計算式をセルへ代入できなくて困っています
Visual Basic(VBA)
-
8
Excelの非表示列も含めてコピー
Excel(エクセル)
-
9
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
Excelのセルの色指定をVBAから...
-
エクセルで、絶対値の平均を算...
-
16進数から2進数へ
-
VBA listBoxについて
-
C#でFontStyleの列挙体に値を追...
-
フォームから値の取得(BinaryR...
-
[エクセル]連続する指定範囲か...
-
DataSetから、DataTableを取得...
-
表にフィルターをかけ、絞った...
-
Excelのオートフィルタで抽出し...
-
配列のSession格納、及び取得方...
-
VBA 配列に格納した値の平均の...
-
ショッピングカートの合計金額...
-
Excel VBA 配列の分割について
-
MFC コンボボックスを複数扱う
-
数字配列データを画像に変換す...
-
VBAでの100万行以上のデータの...
-
スプレットシートのGetTextにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
VBA listBoxについて
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
VBA 配列に格納した値の平均の...
-
配列のSession格納、及び取得方...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
Excelのオートフィルタで抽出し...
-
VB6.0 ファイルの一括読込み
-
Excel オートフィルタのリスト...
-
VBAで指定期間の範囲を抽出し、...
おすすめ情報
申し訳ありません。
説明不足&変数宣言に関して勘違いがありました。
※宣言は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
…
リストが適用されたセルを確認すると、
数式部分がカンマで分割されて表示されてしまいます…
なんとか数式を分割せずに適用させる方法はないでしょうか?